Using one parameter multiple times in prepared mys

2019-06-26 06:01发布

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.

3条回答
够拽才男人
2楼-- · 2019-06-26 06:29

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));
查看更多
男人必须洒脱
3楼-- · 2019-06-26 06:47

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.

查看更多
我想做一个坏孩纸
4楼-- · 2019-06-26 06:50

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);
查看更多
登录 后发表回答