Ошибка использования переменной внутри запроса UPDATE, почему? - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть этот код, чтобы обновить мою запись и проверить, есть ли какое-либо значение в соответствующем input.Но это даже не обновляет мою запись, и я получаю эту ошибку, когда я нажимаю на Submit:

Неустранимая ошибка: Uncaught PDOException: SQLSTATE [42000]: Синтаксическая ошибка или нарушение доступа: 1064 У вас есть ошибкав вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера 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 голосов
/ 22 ноября 2018
  • " Widht " выглядит неправильно.Это фактическое имя столбца?
  • Что показывает print_r($sets);?
  • $column значения в идеале должны быть заключены в обратные черты
  • Я надеюсь, что вы очищаете эти $_POST данные !!!
  • В вашей ошибке указано " правильный синтаксис для использования рядом с '? =': Title ',? =': Keywords 'WHERE title =?' ", что подразумевает, что ошибка наступает раньше первой?.Поэтому просмотрите вывод строки $sets из вышеприведенного маркера.

И последнее, но не менее важное:

...