这可能是一个非常微不足道的问题,但我已经挣扎了一段时间,也试图在网上找到答案,仍然得到错误。
尝试为PHP/MySql表单写一个简单的UPDATE查询:
$sql="UPDATE mytable SET numericValue = '".$someid."', description = '".$sometext."' WHERE id='".$myid."' ";
虽然所有的数值都被传递和更新很好,我不能得到正确的描述。描述列是一个VARCHAR和$sometext是一个字符串,我不能得到它转义/用引号正确包装。
您应该使用sprintf,它通过提供占位符(%d表示小数,%s表示字符串)来避免字符串混淆。
$sql= sprintf("UPDATE mytable SET numericValue = %d, description = '%s' WHERE id = %d", $someid, $sometext, $myid);
如果$someText来自GET/POST/..你应该在它周围包装一个mysql_real_escape_string(),以防止SQL注入(或使用PDO准备语句)。
$sql="UPDATE mytable SET numericValue = '$someid' , description = '$sometext' WHERE id='$myid' ";