MySQL AND语句失败

时间:2013-02-27 20:16:46

标签: mysql pdo clause

我的查询失败似乎是AND语句失败。

if(isset($_POST['sea']) && $_POST['sm'] !==''){
$sm = trim($_POST['sm']);
$sql = "SELECT * FROM `memorials` WHERE `fname` LIKE '$sm%' OR `lname` LIKE '$sm%' OR    `comments` LIKE '$sm%' AND `status` = '2' ";
$q = $conn->prepare($sql);
$q->execute();

我添加了\ backticks,'status ='2'失败。

以下声明适用于phpmyadmin

SELECT * FROM `memorials` WHERE `fname` LIKE 'test%' AND status = '2'

此语句在phpmyadmin中失败

SELECT * FROM `memorials` WHERE `fname` LIKE 'test%' OR `lname` LIKE 'test%' AND status = '2'

此查询搜索注释AND子句有效,但忽略fname和lname

$sql = "SELECT * FROM memorials WHERE `fname`  OR  `lname`  OR `comments`  LIKE '$sm%'  AND status = '2'    ";

有没有人建议这是(我)失败的

谢谢

加里

2 个答案:

答案 0 :(得分:1)

您需要在相应部分周围添加括号。也许是这样的:

SELECT * 
FROM `memorials` 
WHERE (`fname` LIKE 'test%' OR `lname` LIKE 'test%') AND status = '2'

答案 1 :(得分:1)

运营商优先权在这里很重要。您需要添加一些括号:

SELECT * 
FROM   `memorials` 
WHERE  ( `fname` LIKE '$sm%' 
          OR `lname` LIKE '$sm%' 
          OR `comments` LIKE '$sm%' ) 
       AND `status` = '2' 

Documentation