Mysql
 sql >> база данни >  >> RDS >> Mysql

Вмъкване на PDO масив с помощта на ключ като име на колона

Бих го направил по следния начин:

Първо декларирайте колоните. Ще ги използваме, за да извлечем подмножество от $_POST за използване като колони. В противен случай потребителят може да предаде фалшиви параметри на заявка, които не съвпадат с нито една колона на таблицата, което би нарушило нашия SQL.

$columns = array('username','email','password','name');
$column_list = join(',', $columns);

Създайте заместители на именувани параметри, т.е. :username .

$param_list = join(',', array_map(function($col) { return ":$col"; }, $columns));

Формирайте SQL отделно, защото е по-лесно за четене и отстраняване на грешки, ако е в собствена променлива.

$sql = "INSERT INTO `applications` ($column_list) VALUES ($param_list)";

Винаги проверете за статус на грешка, върнат от prepare() и execute() .

$statement = $db->prepare($sql);
if ($statement === false) {
  die(print_r($db->errorInfo(), true));
}

Тук приемаме само полетата на $_POST, които съвпадат с колоните, които искаме да вмъкнем.

$param_values = array_intersect_key($_POST, array_flip($columns));

И предайте този масив на execute() . Отново проверете за състоянието на връщане на грешка.

$status = $statement->execute($param_values);
if ($status === false) {
  die(print_r($statement->errorInfo(), true));
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкна json данни в таблица?

  2. Нарушение на ограничението за целостта:1048 Колона „tagable_id“ не може да бъде нула

  3. Възстановяване след грешна заявка за актуализиране на MySQL?

  4. Разлика между UNIX_TIMESTAMP и NOW() в MySQL

  5. Как да създадете глобален конфигурационен файл?