sql >> Database >  >> RDS >> Mysql

PDO Array invoegen met sleutel als kolomnaam

Ik zou het op deze manier doen:

Declareer eerst de kolommen. We zullen deze gebruiken om een ​​subset van $_POST te extraheren voor gebruik als kolommen. Anders zou een gebruiker valse verzoekparameters kunnen doorgeven die niet overeenkomen met kolommen van de tabel, wat onze SQL zou breken.

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

Maak benoemde parameterplaatsaanduidingen, bijv. :username .

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

Vorm de SQL afzonderlijk, omdat het gemakkelijker te lezen en te debuggen is als het in zijn eigen variabele staat.

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

Altijd controleer op foutstatus geretourneerd door prepare() en execute() .

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

Hier nemen we alleen de velden van $_POST die overeenkomen met de kolommen die we willen invoegen.

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

En geef die array door aan execute() . Controleer nogmaals op de status van de foutretour.

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



  1. Ontdek hoe kardinaliteit de prestaties beïnvloedt

  2. Php mysql pdo-query:vul variabele in met queryresultaat

  3. MySQL-mysterie:Null-waarde verschilt niet van niet-null-tekenreeks

  4. Python call sql-server opgeslagen procedure met tabelwaardeparameter