【发布时间】:2020-12-11 13:29:17
【问题描述】:
我正在尝试为我的项目创建一个函数。我希望它能够处理所有检查功能。我的意思是在您开始在数据库中插入一行之前,您检查该电子邮件地址是否存在一行。
要动态使用此功能,它需要灵活。所以我确实把我的变量放在了一个数组中,但是mysqli_stmt_bind_param 不能处理数组。作为解决方案,我尝试制作一个foreach 循环。
查询:
$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;
}
}
}
我向mysqli_stmt_bind_param 添加了foreach,如下所示:
foreach ($types as $index => $type) {
mysqli_stmt_bind_param($stmt, $type, $variables[$index]);
}
这给了我一个错误,我不知道如何解决它:(
警告:mysqli_stmt_bind_param():变量的数量与准备好的语句中的参数数量不匹配
【问题讨论】:
-
你能告诉我们查询吗?
-
@JayBlanchard 这是问题所在!我编辑了它!
标签: php function mysqli foreach bindparam