2012-04-30 133 views
0

我可能错过了一些明显的东西,但是当我尝试执行此查询时,它不返回任何结果。我将它直接插入到MySQL中,并尝试用有效的行值替换该变量,并获得正确的输出。当我使用一个变量时,它不会给我任何结果。任何人都有任何但是?PHP查询返回无结果

$query = "SELECT title FROM le7dm_pf_tasks WHERE project = (SELECT id FROM le7dm_pf_projects WHERE title = '".$ws_title."') ORDER BY title DESC LIMIT 1"; 

    $result_query = mysql_query($query) or die("Error: ".mysql_error()); 

    while ($row = mysql_fetch_assoc($result_query)) { 
     $result_title = $row['title']; 
    } 

    $result_title = substr($result_title,0,6); 
    echo $result_title; 
+0

'var_dump($ query);' – zerkms

+0

首先,不要这样做。这里有一个SQL注入漏洞。有可能你有“安全模式”或类似的东西打开,改变你的输入,以尝试补救SQL注入错误,但我不知道你的输入是不确定的。 – Andrew

+0

@zerkms VAR转储想出了以下内容: 串(317) “选择标题从le7dm_pf_tasks WHERE项目=(SELECT ID FROM le7dm_pf_projects WHERE标题= 'AAA')ORDER BY标题DESC LIMIT 1” 的输入是我正在浏览页面的标题。它始终为人所知,绝不会被用户输入。 –

回答

1

你的SQL可以做一些返工做(尽管不是针对您的问题的原因)。不需要嵌套选择(如果返回大于1行,也会导致错误)。尝试加入。

$sql = " 
    SELECT title FROM le7dm_pf_tasks t 
     INNER JOIN le7dm_pf_projects p ON t.project = p.id 
    WHERE p.title = '{$ws_title}' 
    ORDER BY title DESC LIMIT 1 
"; 

您还在使用while语句迭代未知数量的行。然后你退出并尝试一个子字符串。你怎么知道最后一行在这个时候有一个值。

尝试在while循环内输出$ result_title来确认数据。

echo $result_title; 

如果您确实只有一行,则不需要while循环。只要做

$row = mysql_fetch_assoc($result_query); 
0

strip_tags($ ws_title); - 它是什么!标题被封装在一个链接到特定项目页面的锚标签中。

感谢所有的好建议。我将在未来的错误测试中使用其中的一些。