Вопрос

Is it possible to use one parameter in a prepared mysqli-statement multiple times with only binding it one time?
something like this

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

I think this is possible with PDO, but I don't konw how to do this with mysqli.

Это было полезно?

Решение

Just to close the question:

The answer is no.

If you want to bind a parameter only one time and using it multiple times in a query you have to use PDO and this maybe also needs a special configuration.

But there seems to be more reasons to use PDO instead of mysqli, according to this great answer or this.

But sure there are workarounds. See the other answers to this question.

Другие советы

You can use this instead

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

Since PHP 8.1 you can use execute without bind_param. I am using array_fill to do the trick.

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

You can edit the array_fill values depending on the statement, Suppose you have 3 values to fill, you can use:

$stmt->execute(array_fill(0, 2, $myage));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top