开发者

INSERT won't run for some reason

I'm sure this is something stupid that I'm missing but can anyone identify why the following won't work:

#sanitise variables
$player1 = GetSQLValueString($_POST['player1'], "text");
$battle = GetSQLValueString($_POST['battle'], "text");
$subject = "You Have Registered For ".$battle."";
$subject = GetSQLValueString($subject, "text");
$message = "You Have Registered For ".$battle."<br /><br />
  Keep an eye on your PM's, it won't take long before your challenger appears!";
$message = GetSQLValueString($message, "text");

echo $player1;
echo "<br />";
echo $subj开发者_开发问答ect;
echo "<br />";
echo $message;
echo "<br />";
echo $time;
echo "<br />";

#insert alerts into private message databases
mysql_select_db($database_conn, $conn);
$query_rsSendAlert = "INSERT INTO site_private_messages 
  (sender, recipient, read_status, subject, message, `timestamp`) 
  VALUES ('Admin', $player1, 'n', $subject, $message, `$time`)";
mysql_query($query_rsSendAlert, $conn) or die(mysql_error());

The echos are just so I can see the variable before they get inserted (to help spot the problem in other words. Here is an example of what it spits out:

'ferdia'
'You Have Registered For \'Fifa 11 Fracus!\''
'You Have Registered For \'Fifa 11 Fracus!\'

Keep an eye on your PMs, it won\'t take long before your challenger appears!'
1304866340

Here is the table format:

CREATE TABLE `site_private_messages` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `sender` varchar(30) DEFAULT NULL,
  `recipient` varchar(30) DEFAULT NULL,
  `read_status` varchar(1) DEFAULT NULL,
  `subject` varchar(200) DEFAULT NULL,
  `message` text,
  `timestamp` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=39 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT;

Any suggestions?


Change this:

$query_rsSendAlert = "INSERT INTO site_private_messages 
                        (sender, recipient, read_status, subject, message, `timestamp`) 
                      VALUES 
                        ('Admin', $player1, 'n', $subject, $message, `$time`)";
             //Error, no ` allowed in values, use ' instead.         ^     ^

...into this:

$query_rsSendAlert = "INSERT INTO site_private_messages 
                        (sender, recipient, read_status, subject, message) 
                      VALUES 
                        ('Admin', $player1, 'n', $subject, $message)";

MySQL will fill the timestamp automatically.


The values part should look like this:

VALUES ('Admin', '$player1', 'n', '$subject', '$message', '$time')";


Chances are, you'll find that your column name timestamp is a reserved word. If you want to use reserved words as column or table names, you must enclose them in backticks

But echo the actual SQL statement, and put in error handling to identify the exact error message that you are getting. Get yourself in the habit of using error handling whenever you use SQL, it will save you a lot of trouble if you get PHP to actually display any MySQL errors when they occur.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜