Php 在准备好的mysqli语句中多次使用一个参数

Php 在准备好的mysqli语句中多次使用一个参数,php,mysqli,prepared-statement,param,Php,Mysqli,Prepared Statement,Param,是否可以在准备好的mysqli语句中多次使用一个参数,而只绑定一次 像这样的 $stmt = $mysqli->prepare(SELECT * FROM user WHERE age BETWEEN ?1 - 2 AND ?1 + 2); $stmt->bind_param('i', $myAge); 我认为这在PDO中是可能的,但我不知道如何在mysqli中实现这一点,您可以使用execute而不使用bind_参数。我正在使用数组填充来完成这个技巧 $stmt->exec

是否可以在准备好的mysqli语句中多次使用一个参数,而只绑定一次 像这样的

$stmt = $mysqli->prepare(SELECT * FROM user WHERE age BETWEEN ?1 - 2 AND ?1 + 2);
$stmt->bind_param('i', $myAge);

我认为这在
PDO
中是可能的,但我不知道如何在
mysqli
中实现这一点,您可以使用execute而不使用bind_参数。我正在使用数组填充来完成这个技巧

$stmt->execute(array_fill(0, 1, $myage));
您可以根据语句编辑数组填充值,假设有3个值要填充,则可以使用:

$stmt->execute(array_fill(0, 2, $myage));

你可以用这个来代替

$stmt = $mysqli->prepare(SELECT * FROM user WHERE age BETWEEN ? - 2 AND ? + 2);
$stmt->bind_param('ii', $my_age, $my_age);

我想结束这个问题:

答案是否定的

如果您只想绑定一个参数,并在查询中多次使用它,那么您必须使用PDO,这可能还需要一个特殊的配置

但根据great answer或其他网站的说法,似乎有更多的理由使用PDO而不是mysqli


但肯定有解决办法。请参阅此问题的其他答案。

普通PDO也不可能做到这一点。不幸的是,没有。PDO已命名参数;而MySQLi没有。因此你需要把它捆两次。好的。所以我必须多次绑定参数。这没问题,但我认为有一种更好的方法可以做到这一点。您可以在PDO中使用命名参数来实现这一点,但只有当PDO配置为模拟prepares.sure时。这就是我所做的。在我的特殊情况下,我需要四次参数,我认为有一种更好的方法来代替一次又一次地绑定相同的东西。你可以在PDO中这样做,但不能在mysqli中这样做。根据这一点,mysqli无法使用。