mySQL 查询中的更新不起作用


UPDATE in mySQL Query not working?

好的,所以我再次做我的网站,我想编辑或更新行的值,所以我去了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");

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

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

尝试:

mysql_query("更新帖子设置标题 = '" .$title ."' 消息 ="。$message ."' 其中 id = 2 限制 1");

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

希望这能做到

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

我用了这个:

mysql_query('更新帖子设置标题 ="' .$title .'",消息 = "' 。$message .'"其中 id=' .$id .' 限制 1');

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

可能你的变量中有引号,所以你得到一个错误。

您有两个解决方案:

  1. 使用以下语法:mysql_query("更新帖子设置标题 = '".$title."',消息 = '".$message."'其中 id='$id' 限制 1");

  2. 或者最好对每个变量使用标准的PHP函数"mysql_real_scape_string()"进入SQL命令,这样每个disallow字符都将以反斜杠为前缀,然后就没有问题了。

尝试

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)));

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

请更正