Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstaw tablicę PDO używając klucza jako nazwy kolumny

Zrobiłbym to w ten sposób:

Najpierw zadeklaruj kolumny. Wykorzystamy je, aby wyodrębnić podzbiór $_POST do wykorzystania jako kolumny. W przeciwnym razie użytkownik mógłby przekazać fałszywe parametry żądania, które nie pasują do żadnych kolumn tabeli, co złamałoby nasz SQL.

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

Utwórz symbole zastępcze parametrów nazwanych, np. :username .

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

Utwórz SQL oddzielnie, ponieważ jest łatwiejszy do odczytania i debugowania, jeśli znajduje się we własnej zmiennej.

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

Zawsze sprawdź status błędu zwrócony przez prepare() i execute() .

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

Tutaj bierzemy tylko pola $_POST, które pasują do kolumn, które chcemy wstawić.

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

I przekaż tę tablicę do execute() . Ponownie sprawdź status zwrotu błędu.

$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. Jak mogę przekazać zapisane dane internetowe localStorage do skryptu php?

  2. Jak stworzyć zapytanie z podwójnym połączeniem do tabeli w Laravel 5.3?

  3. Mysql 5.6 bóle głowy na Mac OSX

  4. Wartość strefy czasowej serwera „CEST” jest nierozpoznana

  5. wielokrotne zapytania mysql w jednym oświadczeniu