mySQL Php更新 - 101

时间:2013-04-03 16:46:52

标签: php mysql sql sql-update

喜欢这个网站,我一直在学习mysql和php来帮助我设计和iPhone Messaging客户端(用于娱乐目的,而不是发布到应用程序商店)

我遇到了一个问题,尝试更新表中的特定项目,基本上我试图让用户在阅读邮件后将邮件标记为已读,但是已经收到错误

错误讯息:

  

无法更新数据: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注入,但是因为这个应用程序专门用于私人聊天的两个人,我不需要真正解决任何安全问题在这一点....: - )

1 个答案:

答案 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'";