gpt4 book ai didi

php - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 '= WHERE 附近使用的正确语法

转载 作者:行者123 更新时间:2023-11-29 12:43:21 25 4
gpt4 key购买 nike

很抱歉打扰这种问题,但我有点厌倦了......遇到了一个相当简单的问题......

这段代码:

$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' 附近使用的正确语法

在我失去理智之前,你能帮忙吗? :)

最佳答案

您正在将 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 的特别说明。据我所知,您不能绑定(bind)列名或表名。因此,您需要一种白名单形式:

$valid_columns = array('col1', 'col2', 'col3');
if (in_array($mysql_key, $valid_columns)){
$column = $mysql_key
} else {
echo "something fishy is going on"; die;
}

关于php - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 '= WHERE 附近使用的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25803275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com