-2

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

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

错误信息:

无法更新数据:您的 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 注入上,但我认为由于这个应用程序只供两个人进行私人聊天,所以我现在不需要真正解决任何安全问题.... :-)

4

1 回答 1

4

read是 mysql 中的保留字 - 文档:http ://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

您将需要使用反引号来转义它 - `。另外,删除 the()周围的括号,$sql因为它们不是必需的。

$sql = "UPDATE `messages` SET `read`='$didread' WHERE `id`='$useridnumber'";
于 2013-04-03T16:54:51.570 回答