【问题标题】:MySQL WHERE multiple columns LIKE '%$sq%' returns empty array [duplicate]MySQL WHERE 多列 LIKE '%$sq%' 返回空数组 [重复]
【发布时间】:2015-02-22 02:02:28
【问题描述】:

基本上,我正在使用 php 和 MySQL 从头开始​​制作社交网络 CMS

我需要通过搜索用户的用户名、显示名称和电子邮件来进行搜索,以返回上述任何一项的结果

<?php require('core.common.php');
//Search page php
$sq    = htmlspecialchars($_GET['q'], ENT_QUOTES);

$search = $db->prepare("SELECT username, disp_name, profilepic 
FROM users WHERE username OR disp_name OR email LIKE '%sq%';"); 
$search->execute();
$viewsearch = $search->fetchAll();

我试过这个方法,但一次只能在一列上:

$search = $db->prepare("SELECT username, disp_name, profilepic
    FROM users WHERE username LIKE '%$sq%';");

我已经试过了……

"SELECT username, disp_name, profilepic FROM users WHERE username LIKE '%sq%'OR disp_name LIKE '%sq%'OR email LIKE '%sq%' ORDER BY username;"

"SELECT username, disp_name, profilepic FROM users WHERE ((username LIKE '%sq%') OR (disp_name LIKE '%sq%') OR (email LIKE '%sq%'));"

连同上述的几个变体,仍然没有希望。

【问题讨论】:

  • 每个 OR 条件都应该有一个用于测试的值。其中 A 喜欢 X 或 B 喜欢 Y 或 C 喜欢 Z
  • 数据库是否必须使用某种存储引擎,我的是InnoDB

标签: php mysql


【解决方案1】:

我认为您正在寻找的是:

SELECT username, disp_name, profilepic 
FROM users 
WHERE username LIKE '%sq%'
    OR disp_name LIKE '%sq%'
    OR email LIKE '%sq%';

【讨论】:

【解决方案2】:
SELECT username, disp_name, profilepic 
FROM users 
WHERE username LIKE '%sq%'
OR disp_name LIKE '%sq%'
OR email LIKE '%sq%'

【讨论】:

  • 很遗憾,这不起作用,它只是返回 Array ( )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 2017-01-27
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多