好的,所以我再次访问我的网站,我想编辑或更新行的值,所以我去了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");
但是当我尝试检查我的桌子时,它并没有改变。
顺便说一下,没有错误显示。
答案 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)
可能你的变量中有引号,所以你会收到错误。
你有两个解决方案:使用此语法:mysql_query(“UPDATE posts SET title ='”。$ title。“',message ='”。$ message。“'WHERE id ='$ id '限制1“);
或者更好地为每个转到sql命令的变量使用标准的php函数'mysql_real_scape_string()',这样每个disallow字符都会以反斜杠作为前缀,然后就没有问题了。
< / LI> 醇>答案 6 :(得分:0)
您没有使用正确的 文本框名称 在 jQuery或脚本
中引用请更正