你可以建立一个事先准备好的声明与IN()
这样的:
构建具有占位符中的每个元素的数组条款-clause
implode()
查询中的占位符数组,由“,”分隔
创建要在你的查询中值的数组(第3行,我不知道以何种形式您收到你的价值观,但你这是怎么能与他们合作)
执行合并IN
条款的值与您在WHERE
条款中可能具有的其他参数。 确保它们的顺序正确。
代码:
$pdo = new PDO('mysql:host=localhost;dbname=stuff;charset=utf8;', 'root', '');
$brands = array('samsung', 'sony', 'dsf', 'q-mobile');
$title = 'du';
$placeholder = array_fill(0, count($brands), '?');
$placeholderString = implode(',', $placeholder);
$sql = 'SELECT * FROM table
WHERE title = ?
AND brand IN (' . $placeholderString . ')';
$stmt = $pdo->prepare($sql);
$stmt->execute(array_merge(array($title), $brands));
添加要查询的数据验证。
只要在where条款中不添加品牌,那样它就会考虑所有品牌。 –
@ShrikantMavlankar谢谢。但我必须添加它,因为它是过滤器搜索和搜索许多列,并且不希望在用户为所有类型,品牌等选择数据时使用许多条件。是否还有其他方法? –
只需使用这个:$ sql =“SELECT * FORM table”; – pradeep