sql >> Databáze >  >> RDS >> Mysql

PDO Vložit pole pomocí klíče jako názvu sloupce

Udělal bych to takto:

Nejprve deklarujte sloupce. Použijeme je k extrahování podmnožiny $_POST pro použití jako sloupce. Jinak by uživatel mohl předat falešné parametry požadavku, které neodpovídají žádnému sloupci tabulky, což by narušilo naše SQL.

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

Vytvořte pojmenované zástupné symboly, např. :username .

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

Vytvořte SQL samostatně, protože je snazší číst a ladit, pokud je ve vlastní proměnné.

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

Vždy zkontrolujte chybový stav vrácený z prepare() a execute() .

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

Zde bereme pouze pole $_POST, která odpovídají sloupcům, které chceme vložit.

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

A předejte toto pole execute() . Znovu zkontrolujte stav návratu chyby.

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



  1. Nerozumím Collation? (Mysql, RDBMS, znakové sady)

  2. Získejte DÉLKU DLOUHÉHO RAW

  3. MySQL a JSON - transformace pole na řádky

  4. Systém automatického e-mailu pro odeslání souhrnné zprávy databáze