MYSQL 或不工作
Posted
技术标签:
【中文标题】MYSQL 或不工作【英文标题】:MYSQL OR not working 【发布时间】:2017-07-01 09:19:49 【问题描述】:我有一个代码,其中OR
不起作用
try
$keyword = trim($_GET["keyword"]);
if ($keyword <> "" )
$sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
. " (first_name OR last_name LIKE :keyword) ORDER BY first_name ";
$stmt = $DB->prepare($sql);
$stmt->bindValue(":keyword", $keyword."%");
它只从last_name
搜索,而不从first_name
搜索。
我需要它同时搜索 last_name 和 first_name。
【问题讨论】:
(first_name LIKE :keyword1 OR last_name LIKE :keyword2)
不是很明显吗?
【参考方案1】:
正确的代码是:
$sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
. " (first_name LIKE :keyword1 OR last_name LIKE :keyword2) ORDER BY first_name ";
$stmt = $DB->prepare($sql);
$stmt->bindValue(":keyword1", $keyword."%");
$stmt->bindValue(":keyword2", $keyword."%");
注意,您不能拥有多个同名占位符。这就是我使用keyword1
和keyword2
并将相同的值绑定到它们的原因。
【讨论】:
keyword1 和keyword2 值应使用单引号 @TSungur 为什么? 因为它将是一个字符串值并且sql字符串用引号括起来? “琼恩·雪诺你什么都不知道” 对不起我的错误【参考方案2】:试试这个
$sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
. " (first_name LIKE :keyword OR last_name LIKE :keyword) ORDER BY first_name ";
【讨论】:
【参考方案3】:这次你加倍努力,尝试了更多,是的,这比mysql search result更清楚。
try
$keyword = trim($_GET["keyword"]);
if ($keyword <> "" )
$sql = "SELECT * FROM tbl_contacts WHERE 1 AND "
. " (first_name LIKE :keyword OR last_name LIKE :keyword) ORDER BY first_name ";
$stmt = $DB->prepare($sql);
$stmt->bindValue(":keyword", $keyword."%");
希望对你有所帮助。
是的,请尝试编辑相同的问题,避免以不同的方式提出相同的问题。
我也回答了这个问题https://***.com/a/44859438/7678788
【讨论】:
我不得不重复一遍,因为***.com/questions/44845731/mysql-search-result 现在还没有完全活跃。 @Chiru 在我的回答中阅读通知并编辑您的。您的代码将不工作。以上是关于MYSQL 或不工作的主要内容,如果未能解决你的问题,请参考以下文章