首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,以获取正确的语法,以便在'= WHERE‘附近使用

您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,以获取正确的语法,以便在'= WHERE‘附近使用
EN

Stack Overflow用户
提问于 2014-09-12 15:46:26
回答 2查看 95关注 0票数 0

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

这段代码:

代码语言:javascript
复制
$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‘

在我发疯之前你能帮帮我吗?:)

EN

回答 2

Stack Overflow用户

发布于 2014-09-12 15:58:56

您正在将mysql_*mysqli_*混合在一起

你不能这么做,因为它不会起作用的。您只能使用mysqli_*函数。

PHP doc页面改写:

代码语言:javascript
复制
/* 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的特别说明。据我所知,您不能绑定列名或表名。因此,您需要一种形式的白名单:

代码语言:javascript
复制
$valid_columns = array('col1', 'col2', 'col3');
if (in_array($mysql_key, $valid_columns)){
    $column = $mysql_key
} else {
    echo "something fishy is going on"; die;
}
票数 1
EN

Stack Overflow用户

发布于 2014-09-12 17:15:56

您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解在'= WHERE附近使用的正确语法。

出现此错误意味着$mysql_value中没有任何内容,因为显示= **???** WHERE时出错,请检查此值,并按如下所示更正查询

代码语言:javascript
复制
"UPDATE archi_form SET ".$mysql_key." = '".$mysql_value."' WHERE random_string = '".$randstring."'"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25803275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档