MYSQLi中的准备语句与“SELECT WHERE IN”结合使用

时间:2014-06-26 07:39:12

标签: php mysqli prepared-statement

我面临着与mysqli和准备好的陈述有点问题:

我想准备和" IN"在sqli声明,但它不适合我! : - (

有人可以帮我解释一下我做错了什么吗?我认为这是因为预备语句的工作方式,因此像一些魔术(条带,添加......)正在阻止我的解决方案,所以也许我需要别的东西,但可以搞清楚。这是我的sql语句:

$dbPrepare = $db->prepare(
    'SELECT
    `name`, `image`
    FROM `sometable`
    WHERE `number` IN (?)'
);
$dbPrepare->bind_param('s', $numbers);

这是我实现" $ numbers":

的方法
$numbers = implode('","', explode(',', $_GET['numbers']));

" var_dump($ numbers)"结果如下:string(5)" a"," b" ($ _GET ['数字']得到它的价值如下:& numbers = a,b)

我知道,也许不是最好的解决方案,但实际上我想将一些数据转移到(" IN"声明包括准备好的变量。

供参考:这是有效的:

$dbPrepare = $db->prepare(
    'SELECT
    `name`, `image`
    FROM `sometable`
    WHERE `number` IN ("'.implode('","', explode(',', $_GET['numbers'])).'")'
);

所以我很确定这是因为准备好的变量。

提前致谢!

1 个答案:

答案 0 :(得分:0)

Try this

$dbPrepare = $db->prepare(
    'SELECT
    `name`, `image`
    FROM `sometable`
    WHERE `number` IN (?)'
);
$dbPrepare->bind_param('s', $numbers[0],$numbers[1]);