很抱歉打扰你这样的问题,但我有点厌倦了……有一个相当简单的问题...
这段代码:
$mysql_key = mysql_real_escape_string(str_replace($mysql_remove, '', $key));
$mysql_value = mysql_real_escape_string($value);
$insert = mysqli_query($connection, "UPDATE archi_form SET ".$mysql_key." = ".$mysql_value." WHERE random_string = '".$randstring."'");抛给我这个错误:
您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解要在第1 1064行使用的正确语法'= WHERE random_string='pq9HzavnyQdC1ZrCODsV1HDc0xcV6jXdPT20TNRjTM0pjzgd9jJO3EgXT‘
在我发疯之前你能帮帮我吗?:)
发布于 2014-09-12 15:58:56
您正在将mysql_*和mysqli_*混合在一起
你不能这么做,因为它不会起作用的。您只能使用mysqli_*函数。
从PHP doc页面改写:
/* create a prepared statement */
if ($stmt = $mysqli->prepare("UPDATE archi_form SET $column = ? WHERE random_string = ?")) {
/* bind parameters for markers */
$stmt->bind_param("ss", $value, $randstring);
/* execute query */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($result);
/* fetch value */
$stmt->fetch();
//do something
/* close statement */
$stmt->close();
}请注意,我没有使用mysqli_real_escape_string。请阅读PHP文档以了解原因。
$column的特别说明。据我所知,您不能绑定列名或表名。因此,您需要一种形式的白名单:
$valid_columns = array('col1', 'col2', 'col3');
if (in_array($mysql_key, $valid_columns)){
$column = $mysql_key
} else {
echo "something fishy is going on"; die;
}发布于 2014-09-12 17:15:56
您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解在'= WHERE附近使用的正确语法。
出现此错误意味着$mysql_value中没有任何内容,因为显示= **???** WHERE时出错,请检查此值,并按如下所示更正查询
"UPDATE archi_form SET ".$mysql_key." = '".$mysql_value."' WHERE random_string = '".$randstring."'"https://stackoverflow.com/questions/25803275
复制相似问题