Итак, я передаю массивы значений, которые будут меняться при использовании в методе, который затем вставляет их в базу данных. Моя проблема заключается в том, как связаны параметры.Вставка нескольких значений в MySQL с помощью PHP
public function insertValues($table, $cols, $values)
{
$mysqli = new mysqli(DBHOST, DBUSER, DBPASSWORD, DBDATABASE);
$colString = implode(', ', $cols); // x, x, x
$valString = implode(', ', array_fill(0, count($values), '?')); // ?, ?, ?
$sql = "INSERT INTO $table ($colString) VALUES($valString)";
if (!$stmt = $mysqli->prepare($sql))
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
// THIS IS THE PROBLEM AREA
foreach ($values as $v)
if (!$stmt->bind_param('s', $v))
echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
if (!$stmt->execute())
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
$stmt->close();
$mysqli->close();
}
Мне нужен способ, чтобы связать все параметры сразу я думаю, и не один, в то время, но я не могу понять, полезный способ сделать это. Любая помощь будет принята с благодарностью.
В чем проблема? Основываясь на чтении документации, то, что вы делаете, должно быть правильным, хотя мне самому не нужно ее проверять. – siride
Вы можете связать несколько var за один раз, но поскольку вы не знаете числа var в вашем случае, лучшим способом является итерация. Ваше решение работает хорошо? Если нет, попытались ли написать 'foreach ($ values as $ index => $ v)', а затем связать '$ stmt-> bind_param ('s', $ values [$ index])'? – MatRt