gpt4 book ai didi

php - SQL - 选择 WHERE 列 = TRUE AND :input = `string`

转载 作者:行者123 更新时间:2023-11-29 10:37:03 27 4
gpt4 key购买 nike

我正在使用PHP(使用PDO)和MySQL制作一个简单的搜索引擎,其目标是查找库存中的产品.
我的 TABLE 手机 有一个 COLUMN Snowden,它是一个 TINYINT(包含 01 >)。如果 phone.snowdentrue 并且用户的输入为 'snowden',我希望能够获得结果.


这是我的查询的简短版本:(:search_0 是用户的输入。这是为 PDO 准备的查询)

SELECT * FROM phone WHERE phone.snowden = 1 AND :search_0 = `snowden`


当然,真正的查询实际上更长(连接多个并搜索许多),但除了这个之外一切都有效。
当我尝试搜索'snowden'时,我没有得到任何结果(这意味着在任何列中均未找到关键字并且> “斯诺登”案例不起作用)。

  • 我是否错过了语法的某些内容?
  • 如何按照我尝试的方式实现此查询?
  • 如何通过与列名称进行比较来实现此目的(如果这是更好的方法)?
<小时/>

编辑:完整代码

这是我使用的完整代码:

$keywords = explode(" ", $_POST['query']);
$query = "SELECT phone.id, phone.imei, phone.model, phone.color, phone.capacity, phone.grade, phone.sourcing, phone.entry, phone.canal, phone.sale, phone.state, phone.snowden FROM phone LEFT JOIN capacity ON (phone.capacity = capacity.id) LEFT JOIN color ON (capacity.color = color.id) LEFT JOIN model ON (color.model = model.id) LEFT JOIN grade ON (phone.grade = grade.id) WHERE ";
$query_array = array();
for ($i = 0; $i < count($keywords); $i += 1) {
$query .= " ( phone.imei LIKE :search_" . $i;
$query .= " OR phone.sourcing LIKE :search_" . $i;
$query .= " OR phone.canal LIKE :search_" . $i;
$query .= " OR phone.entry LIKE :search_" . $i;
$query .= " OR phone.sale LIKE :search_" . $i;
$query .= " OR phone.state LIKE :search_" . $i;
$query .= " OR ( phone.snowden = 1 AND ':search_" . $i . "' = `snowden` )";
$query .= " OR model.name LIKE :search_" . $i;
$query .= " OR color.name LIKE :search_" . $i;
$query .= " OR capacity.amount LIKE :search_" . $i;
$query .= " OR grade.name LIKE :search_" . $i;
if ($i != (count($keywords) - 1)) {
$query .= " ) AND ";
} else {
$query .= " ) ";
}
if (strtolower($keywords[$i]) == 'snowden') {
$query_array['search_' . $i] = $keywords[$i];
} else {
$query_array['search_' . $i] = "%" . $keywords[$i] . "%";
}
}
$query .= "ORDER BY phone.id DESC";
$results = $stock->prepare($query);
$results->execute($query_array);

最佳答案

更换线路

$query .= " OR ( phone.snowden = 1 AND ':search_" . $i . "' = `snowden` )";

$query .= " OR ( phone.snowden = 1 AND 'snowden'= :search_" . $i )";

关于php - SQL - 选择 WHERE 列 = TRUE AND :input = `string` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46235947/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com