我的更新cade有什么问题?

我的更新cade有什么问题?

问题描述:

我的代码更新sql数据库的表是什么是错误信息,我需要更新字段文本。我的更新cade有什么问题?

$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是正确的。

我tryd

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

还,但它没有工作

+0

您尝试过哪些调试?什么是最简单的用例场景?你会得到什么错误? – 2013-02-20 14:58:08

+1

你在哪儿设置'$ text'? – 2013-02-20 14:59:19

字符串值必须加引号

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

如果InfoID也是一个字符串,那么你还需要使用单引号把它包起来。

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

作为旁注,查询是用SQL Injection脆弱,如果变量的值(小号)从外部来了。请看下面的文章,了解如何防止它。通过使用PreparedStatements你可以摆脱使用单引号围绕值。

+0

我的错,它确实工作,但我发布$ infoid错误!谢谢 ! – 2013-02-20 15:01:24

+0

@ user2091723它会产生错误吗? – 2013-02-20 15:02:01

+0

@ user2091723也为最后一个'$ InfoId'添加引号。 – Meherzad 2013-02-20 15:02:36

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

从字符串的报价

除此之外,你似乎混淆了变量名;我猜测,$text应该$info

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

注意,你需要的,如果文本例如包含'字符逃脱你的字符串,以避免破坏您的查询。

但是你真的应该切换到PDO(或mysqli)并准备带有绑定变量的语句。