0

我更新 sql 数据库的代码有什么问题,表是 Informatie,我需要更新字段 Text。

$info =  nl2br($_POST["info"]);
    echo $info."<br>";
    $infoid = $_POST["infoid"];
    echo $infoid;
    echo "<br>Info ID : $infoid";
    $sql = "UPDATE Informatie set Text = $text WHERE InfoId = $infoid";
    $query = mysql_query("$sql");

echo $info 和 $infoid 是正确的。

我试过了

$sql = "UPDATE Informatie set Text = $text WHERE InfoId = '$infoid'"; 

也,但它没有用

4

3 回答 3

1

字符串值必须加引号

$sql = "UPDATE Informatie SET Text = '$text' WHERE InfoId = $infoid";

如果InfoID也是一个字符串,那么您还需要用单引号将其包裹起来。

$sql = "UPDATE Informatie SET Text = '$text' WHERE InfoId = '$infoid'";

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-02-20T14:58:01.400 回答
0
$sql = "UPDATE Informatie set Text = '$text' WHERE InfoId = '$infoid'";
于 2013-02-20T15:00:23.397 回答
0

除了引用字符串之外,您似乎还混淆了变量名;我猜$text应该是$info

$sql = "UPDATE Informatie set Text = '" . mysql_real_escape_string($info) . "'
          WHERE InfoId = '" . mysql_real_escape_string($infoid) . "'";

请注意,如果文本包含例如字符,您需要对字符串进行转义以避免查询中断'

但是您确实应该切换到 PDO(或 mysqli)并使用绑定变量准备语句。

于 2013-02-20T15:06:28.703 回答