我遇到了一个问题,尝试更新表中的特定项目,基本上我试图让用户在阅读邮件后将邮件标记为已读,但是已经收到错误
错误讯息:
无法更新数据:SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行'read ='MAYBE'WHERE id ='19''附近使用正确的语法
这是我发送GET的URL示例。这应该找到row / id#19并将READ标记为YES,因此它已被读取,之前它被设置为NO。
http://myawesomesite.com/markasread.php?idnumber=19&readmessage=MAYBE
这是我的代码:
<?php
$useridnumber = $_GET['idnumber'];
$didread = $_GET['readmessage'];
$conn = mysql_connect("sqlurl.com","sqllogin","sqlpassword");
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydatabase');
$sql = ("UPDATE messages SET read='$didread' WHERE id='$useridnumber'");
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not update data: ' . mysql_error());
}
echo "Updated data successfully\n";
mysql_close($conn);
?>
任何帮助或说明都会令人惊讶,我理解我的登录信息是关于相同的php和sql注入,但是因为这个应用程序专门用于私人聊天的两个人,我不需要真正解决任何安全问题在这一点....: - )
答案 0 :(得分:4)
read
是mysql中的保留字 - docs:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
你需要使用反引号来逃避它 - `。另外,删除()
周围的括号$sql
,因为它们不是必需的。
$sql = "UPDATE `messages` SET `read`='$didread' WHERE `id`='$useridnumber'";