gpt4 book ai didi

php - MySQL 出现 'Like' 查询问题

转载 作者:行者123 更新时间:2023-11-29 14:43:53 25 4
gpt4 key购买 nike

我的查询存在问题,其中包含“like”语句。

这是我的代码:

function get_number_of_locations_by_zip_tag($zip, $tag) 
{
global $db;
$query = "SELECT * FROM location WHERE zip = :zip AND disabled = 0 AND (tags LIKE :tag OR name LIKE :tag) LIMIT :start, :number";

$statement = $db->prepare($query);
$statement->bindValue(':zip', $zip);
$statement->bindValue(':tag', '%'.$tag.'%', PDO::PARAM_STR);
$statement->execute();
$locations = $statement->fetchAll(); //fetch();
$statement->closeCursor();
return $locations;
}

我期望查询返回标签与“名称”或“标签”字段匹配的行,但它只会返回标签匹配的行。

如果我将查询切换为:

$query = "SELECT * FROM location WHERE zip = :zip AND disabled = 0 AND (name LIKE :tag OR tags LIKE :tag) LIMIT :start, :number";

那么结果是相反的,它只会返回name字段匹配的行,而忽略tags字段。

有人发现这个查询有什么问题吗?当我开始开发时,它在 Windows 上的 XAMPP 服务器上按照我的预期工作,但是当我将所有内容切换到我的 LAMP 服务器时,此查询不再正常工作。

最佳答案

您可能想要更改:

tags LIKE :tag OR name LIKE :tag

tags LIKE ':tag' OR name LIKE ':tag'

或者更改您的代码:

  $statement->bindValue(':tag',  '\'%'.$tag.'%\'', PDO::PARAM_STR);

as like 表达式应该用引号引起来。例如 name LIKE '%john%'

关于php - MySQL 出现 'Like' 查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7397218/

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