2012-10-15 58 views
0

由於某種原因,這給我一個錯誤?多行顯示在行中

$result = mysql_query("SELECT wpjb_job.*, 
           wpjb_category.* 
         FROM wpjb_job , 
           wpjb_category 
         WHERE (is_filled='0' AND is_active='1') 
          AND wpjb_job.job_category = wpjb_category.id 
          AND job_country={$countryid} 
         ORDER BY wpjb_job.job_title") or die(mysql_error()); 

這是錯誤:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊,以便在第6行的'ORDER BY wpjb_job.job_title'附近使用正確的語法。至於我可以計算出我在服務器上有MySQL 5.1。該代碼仍然有效,但會在表格後出現錯誤。

我將它改爲以下來測試。 現在它運行良好,但它打印表格的標題兩次,一次在開始,然後在結束。變化是在$ countryid,我現在把它作爲「$ countryid」這沒有給出錯誤

下面表格的打印代碼

$joburl = "http://www.x.com/job/view/"; 
     $result = mysql_query("SELECT wpjb_job.*,wpjb_category.* 
            FROM wpjb_job , wpjb_category 
             WHERE (is_filled='0' AND is_active='1') 
             AND wpjb_job.job_category = wpjb_category.id 
             AND job_country='$countryid' 
             ORDER BY job_title") 
        or die(mysql_error()); 

     echo "<table border='1'>"; 
     echo "<tr> <th>Job</th> <th>Company</th> <th>Industry</th> </tr>"; 

// keeps getting the next row until there are no more to get 

    while($row = mysql_fetch_array($result)) { 

// Print out the contents of each row into a table 

     echo "<tr><td>"; 
     echo '<a href ="http://www.x.com/job/view/'.$row['job_slug'].'"> '.$row['job_title'].' </a>'; 
     echo "</td><td>"; 
     echo $row['company_name']; 
     echo "</td><td>"; 
     echo $row['title']; 
     echo "</td></tr>"; 
    } 
    echo "</table>"; 
    } 
+0

在ORDER BY之前是否有空格 –

+0

您確定{$ countryid}正在被正確評估嗎? – ethrbunny

+2

使用'echo $ your_query'來顯示正在執行的查詢。 – Jocelyn

回答

1

大括號(複雜的語法)通常只用於評估數組元素或對象屬性和其他複雜表達式({$array[val]}{$this->object})。你可以從你的查詢中刪除它們。這可能會導致您的查詢無法解釋,具體取決於您的PHP版本和變量範圍。您可以通過對您的查詢字符串(echo "SELECT {$countryid}";)執行echo進行檢查。

另外,mysql_函數是being deprecated,如果您傳遞用戶生成的變量,則應使用mysqli_PDO函數並綁定參數。

您的查詢也使用隱式連接語法。編寫連接查詢時應該練習顯式語法(見下文)。最後,總是使用列列表而不是全選(SELECT *)以避免不必要的開銷。

SELECT a.col1, a.col2, b.col1 
FROM wpjb_job a 
INNER JOIN wpjb_category b ON b.id = a.job_category 
WHERE (is_filled=0 AND is_active=1) 
    AND a.job_country = $countryid 
ORDER BY a.job_title 
+0

比他的php版本評價花括號更可能的是他根本沒有定義$ countryid,或者它是一個空字符串或null。其餘的立場,我喜歡你提到更好的做法。你有我的投票。 – xception

+0

$ countryid我已經更改爲'$ countryid',它可以正常工作,除了現在打印兩次表格標題。 –

+0

@ user1745062你能用輸出表標題兩次的代碼更新你的問題嗎? – Kermit