2

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

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

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

4

7 回答 7

2

尝试:

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

您使用的是什么版本的 PHP?

于 2012-05-26T09:01:41.133 回答
2

希望这会做

mysql_query("UPDATE posts SET title = '{$title}', message = '{$message}' WHERE id={$id} LIMIT 1");
于 2012-05-26T09:21:57.723 回答
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)));

于 2012-05-26T09:21:36.623 回答
1

我用这个:

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

于 2012-05-26T09:25:53.197 回答
1

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

于 2012-05-26T09:30:04.837 回答
1

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

你有两个解决方案:

  1. 使用这个语法:mysql_query("UPDATE posts SET title = '".$title."', message = '".$message."' WHERE id='$id' LIMIT 1");

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

于 2012-05-26T09:54:11.973 回答
0

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

请改正

于 2012-10-24T04:10:07.037 回答