SQL查询失败

问题描述:

我希望查询最初返回c_id> 0的所有记录,然后根据通过文本框提供的后续条件进行过滤。但是,在第一次访问页面时,我没有收到任何记录。下面是代码:SQL查询失败

$ctitle = mysql_real_escape_string($_POST['ctitle']); 
$csubject = mysql_real_escape_string($_POST['csubject']); 
$creference = mysql_real_escape_string($_POST['creference']); 
$cobjecttype = mysql_real_escape_string($_POST['cobjecttype']); 
$cmaterial = mysql_real_escape_string($_POST['cmaterial']); 
$ctechnic = mysql_real_escape_string($_POST['ctechnic']); 
$cartist = mysql_real_escape_string($_POST['cartist']); 
$csource = mysql_real_escape_string($_POST['csource']); 

    $sql = "SELECT * FROM collections WHERE (
    c_id>0 AND 
    `ctitle` LIKE '{$ctitle}' AND 
    `csubject` LIKE '{$csubject}' AND 
    `creference` LIKE '{$creference}' AND 
    `cobjecttype` LIKE '{$cobjecttype}' AND 
    `cmaterial` LIKE '{$cmaterial}' AND 
    `ctechnic` LIKE '{$ctechnic}' AND 
    `csource` LIKE '{$csource}' AND 
    `cartist` LIKE '{$cartist}' 
    )ORDER BY c_id DESC"; 

当我附和查询我得到如下印刷代替:

request "Could not execute SQL query" SELECT * FROM collections WHERE (c_id>0 AND `ctitle` LIKE '' AND `csubject` LIKE '' AND `creference` LIKE '' AND `cobjecttype` LIKE '' AND `cmaterial` LIKE '' AND `ctechnic` LIKE '' AND `csource` LIKE '' AND `cartist` LIKE '')ORDER BY c_id DESC 

哪里应该何去何从?

将一个空间)ORDER BY

+0

嗨,我按照你的建议,但仍然是相同的错误。我也删除了一些条件,只保留:$ sql =“SELECT * FROM collections WHERE c_id> 0 ORDER BY c_id DESC”;并返回所有记录。但我需要这些标准才能工作。 – 2013-04-10 07:16:53

+0

空间也是我能发现的唯一错误......你究竟得到了什么错误? – UrGuardian4ngel 2013-07-17 23:53:49

之间不需要四处拖where子句元素的括号。

+0

您正在使用哪个数据库? – SteveP 2013-04-10 06:41:06

+0

嗨,我正在使用MySQL。 – 2013-04-10 07:05:20

好吧...我想我明白了...尝试更换LIKE'LIKE '%'

LIKE'将无法​​工作,因为那只能说明空列。通过添加通配符(%)它将显示匹配所有行的所有行。但它可能是一个更好,更干净的解决方案,可以完全动态地构建查询,省略空WHERE条件。

+0

我有太多的问题需要解决。现在它按预期工作。感谢大家的帮助。 – 2014-10-07 10:33:03