在UPDATE查询中使用变量时出错,为什么?

时间:2018-11-22 15:31:49

标签: php sql if-statement foreach sql-update

我有这段代码来更新我的记录,并检查相应的input上是否有任何值。但这甚至没有更新我的记录,并且当我单击提交时出现此错误:

  

致命错误:未捕获的PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;请参阅附录A。检查与您的MariaDB服务器版本相对应的手册以获取在'?附近使用的正确语法。 =':title',? =':keywords'WHERE title =?'

if(isset($_POST["updateBTN"])){    

  $insert_data = array(
    'keywords'         => $_POST['keywords'],
    'img'              => $_POST['img'],
    'widht'            => $_POST['widht'],
    'status'           => $_POST['status'],
    'name'             => $_POST['name'],
    'height'           => $_POST['height']
  );
    $sets="";

    foreach ($insert_data as $column => $value) {

        if ($value!=""){

            $sets .= $column." = '".$column."', ";

        }
    }
     $sets = rtrim($sets, ', ');

     $query = "UPDATE table SET $sets WHERE title = :title";
     $stmt = $conn->prepare($query);
     $stmt->execute($insert_data);

}

html:

<form  method="post">
<div>
    <input type="text" name="title"> 
    <span data-placeholder="Title"></span>          
</div>
<div>
    <input type="text" name="keywords"> 
    <span data-placeholder="keywords"></span>          
</div>
<div>
    <input type="text" name="img"> 
    <span data-placeholder="img"></span>          
</div>
.
.
.
<button type="submit" name="updateBTN">Send</button>
</form>

1 个答案:

答案 0 :(得分:0)

  • 宽度”看起来像是拼写错误。那是实际的列名吗?
  • print_r($sets);向您显示什么?
  • $column值理想情况下应放在反引号中
  • 我希望您正在清理$_POST数据!
  • 您的错误指出“ 在'?=':title',?=':keywords'WHERE title =?'附近使用的正确语法”,这意味着错误出现在第一个{{ 1}}。因此,请查看以上项目符号输出的?字符串。

最后但并非最不重要的: