【发布时间】:2019-09-20 16:43:32
【问题描述】:
我想用name占位符将数组的值传递给select语句,如:
$keywords=("word1", "word2", etc);
$sql = "SELECT * FROM TABLE WHERE name LIKE :word1 AND name LIKE :word2 etc"
下面是我正在编写的脚本:
$symptoms=$_POST['search'];
$keywords = preg_split('/[\s]+/', $symptoms);
$totalKeywords = count($keywords);
$sql = "SELECT * FROM TABLE_3 WHERE MATCH (symptoms) AGAINST (:symptoms) ";
$like_placeholder = implode(' AND ', array_fill(0, $totalKeywords, 'symptoms LIKE ?'));
$sql .= " AND ({$like_placeholder})"; // build the query with placeholders
// prep input
$where_keywords = array_map(function($value) {
return "%{$value}%";
}, $keywords);
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':symptoms', $symptoms);
$stmt->execute([$_POST['search']]);
$stmt->execute($keywords);
$results = $stmt->fetchAll();
【问题讨论】:
-
请不要只求我们为您解决问题。向我们展示您是如何尝试自己解决问题的,然后向我们确切展示结果是什么,并告诉我们您为什么觉得它不起作用。给我们一个关于什么不起作用的明确解释,并提供Minimal, Complete, and Verifiable example。 Read 如何提出一个好问题。
-
Mysqli 或 PDO ????
-
您需要动态构建查询和参数数组。
-
@Barmar 请查看我的编辑问题。我的问题是在数组中传递变量。