В настоящее время я пытаюсь создать небольшую универсальную функцию для вставки. Моя цель - передать таблицу, столбцы, значения и типы, чтобы заполнить вставку.Bind Variable Количество параметров в подготовленном заявлении
Моя единственная проблема это утверждение:
$stmt -> bind_param($types, $var1, $var2 ...);
Что я в принципе нужно будет что-то вроде этого:
$stmt -> bind_param($types, $array);
Это то, что я получил до сих пор:
function insert($into, $columns, $values, $types) {
global $connection;
// Check Correct Length
if(count($columns) != count($values) ||
count($columns) != count($types)) {
return false;
}
$count = count($columns);
$column_string = "";
$value_string = "";
$value_types = "";
for($i = 0; $i < $count; $i++) {
$column_string .= $columns[$i];
$value_types .= $types[$i];
$value_string .= '?';
if($i + 1 < $count) {
$column_string .= ',';
$value_string .= ',';
}
}
$sql = "INSERT INTO $into ($column_string) VALUES ($value_string)";
// Execute Statement
if($stmt = $connection -> prepare($sql)) {
// $stmt -> bind_param("sss", $transaction, $email, $status);
// What to do here?
$stmt -> execute();
$stmt -> close();
}
SQL-оператор уже выглядит отлично. Также типы готовы - я просто нужен способ, чтобы динамически связать параметры ...
Вы не можете. 'bindparam' является отображением 1: 1. Вы можете использовать параметр array в execute(), чтобы передать все сразу. '$ stmt-> execute (array (': foo' => 'bar', ....));' –
Можете ли вы дать мне дополнительную информацию об этом? Есть ли отрицательная сторона делать это так? –
ну, это только помогает при выполнении запроса. если вы хотите связать значения результата, вы застряли со многими вызовами bindparam(). –