Я пытаюсь создать функцию для своего проекта. Я хотел бы, чтобы он обрабатывал все функции проверки. Я имею в виду, что прежде чем начать вставлять строку в базу данных, вы проверяете, существует ли строка с этим адресом электронной почты.
Чтобы использовать эту функцию динамически, она должна быть гибкой. Поэтому я поместил свои переменные в массив, но mysqli_stmt_bind_param
не может обрабатывать массивы. В качестве решения я попытался сделать foreach
l oop.
Запрос:
$sql = "SELECT users_id, users_email FROM users WHERE users_id = ? AND users_email = ?;";
Вызов функции:
check_database($sql, array($id, $mail), array("s", "s"), $location);
Моя исходная функция :
function check_database($sql, $variables, $types, $location)
{
require $_SERVER['DOCUMENT_ROOT'] . '/includes/db/db.inc.php';
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: " . $location . "?error=sqlerror");
exit();
} else {
mysqli_stmt_bind_param($stmt, $types, $variables);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if (!$row = mysqli_fetch_assoc($result)) {
return true;
}
}
}
Я добавил foreach
к mysqli_stmt_bind_param
следующим образом:
foreach ($types as $index => $type) {
mysqli_stmt_bind_param($stmt, $type, $variables[$index]);
}
Это дает мне ошибку, и я не знаю, как ее решить :(
Предупреждение: mysqli_stmt_bind_param (): количество переменных не соответствует количеству параметров в подготовленном выражении