mySQL Query中的UPDATE不起作用?

时间:2012-05-26 08:56:01

标签: php mysql

好的,所以我再次访问我的网站,我想编辑或更新行的值,所以我去了phpmyadmin,检查更新值的代码是什么,所以我有这个:

UPDATE `database`.`table` SET `title` = 'My Title', `message` = 'My Message' WHERE  `table`.`id` =2 LIMIT 1 ;

所以我尝试在PHP上重写它:

mysql_query("UPDATE posts SET title = '$title', message = '$message' WHERE id='$id' LIMIT 1");

但是当我尝试检查我的桌子时,它并没有改变。

顺便说一下,没有错误显示。

7 个答案:

答案 0 :(得分:2)

尝试:

mysql_query(“UPDATE发布SET title ='”。$ title。“'message ='”。$ message。“'WHERE id = 2 LIMIT 1”);

您使用的是哪个版本的PHP?

答案 1 :(得分:2)

希望这样做

mysql_query("UPDATE posts SET title = '{$title}', message = '{$message}' WHERE id={$id} LIMIT 1");

答案 2 :(得分:1)

尝试

mysql_query("UPDATE posts SET title = '$title', message = '$message' WHERE id=$id");

或者防止SQL注入

mysql_query(sprintf("UPDATE posts SET title = '%s', message = '%s' WHERE id=%s LIMIT 1", mysql_real_escape_string($title), mysql_real_escape_string($message), mysql_real_escape_string($id)));

答案 3 :(得分:1)

我用过这个:

mysql_query('UPDATE发布SET title =“'。$ title。'”,message =“'。$ message。'”WHERE id ='。$ id。'LIMIT 1');

答案 4 :(得分:1)

你有SQL注入。这意味着您的邮件中的单引号将破坏查询。您传递给查询的任何变量,无论是来自用户输入,是从数据库检索,还是具有硬编码值,都必须正确转义。在您的情况下,由于您使用的是mysql *函数系列,因此需要mysql_real_escape_string。但是,您可以迁移到mysqli(这是一个非常简单的过程)或PDO并使用Prepared statements来帮助您。当您使用预准备语句时,您可以忘记转义,并将变量直接绑定到查询中的占位符。

答案 5 :(得分:1)

可能你的变量中有引号,所以你会收到错误。

你有两个解决方案:

  1. 使用此语法:mysql_query(“UPDATE posts SET title ='”。$ title。“',message ='”。$ message。“'WHERE id ='$ id '限制1“);

  2. 或者更好地为每个转到sql命令的变量使用标准的php函数'mysql_real_scape_string()',这样每个disallow字符都会以反斜杠作为前缀,然后就没有问题了。

    < / LI>

答案 6 :(得分:0)

没有使用正确的 文本框名称 jQuery或脚本

中引用

请更正