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_namefirst_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."%");

注意,您不能拥有多个同名占位符。这就是我使用keyword1keyword2 并将相同的值绑定到它们的原因。

【讨论】:

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 或不工作的主要内容,如果未能解决你的问题,请参考以下文章

使用啥orm或不使用它[关闭]

PHP SQL Server连接工作或不工作[重复]

SKSpriteNode .run 不工作或不完全工作

pymssql.connect() 错误:“自适应服务器不可用或不存在”

访问报告条件或不工作

js工作或不点击