【发布时间】:2020-01-22 14:24:52
【问题描述】:
我正在尝试将我一年前制作的复杂 php 文件转换为准备好的语句。参数将像这样传入:
file.php?name=John&age=20
但是,可能会使用更多参数。工作、地址、电话号码等。这是我容易与准备好的陈述混淆的地方。
例如:
$query = "SELECT name, id, age, address, phone_number from person_db WHERE 1=1 ";
if (isset($_REQUEST['name'])) {
$query .= " and name = ?";
}
if (isset($_REQUEST['age'])) {
$query .= " and age = ?";
}
if (isset($_REQUEST['address'])) {
$query .= " and address = ?";
}
$stmt = $db->prepare($query);
$stmt->bind_param('sis', $_REQUEST['name'], $_REQUEST['age'], $_REQUEST['address']);
$stmt->execute();
这里的问题是bind_param,因为我不知道有多少参数可能可用。
我将如何以合乎逻辑的方式解决这个问题?
【问题讨论】:
-
我不确定来自 mysqli 驱动程序的
bind_param(),但是使用 PDO,您可以调用bindValue()任意次数,每次都有一个值,因此您可以将其放入循环。
标签: php mysqli prepared-statement