2012-04-30 131 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); - 它是什麼!標題被封裝在一個鏈接到特定項目頁面的錨標籤中。

感謝所有的好建議。我將在未來的錯誤測試中使用其中的一些。