2013-02-20 35 views
0
//(!) Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given 

不知道得到這個問題。請大家幫我解決。這裏是我的代碼:如何在一個查詢中組合三個表,我需要所有行?

$query = "SELECT t1.employeecode, t1.employeename, t2.v, t2.w, t3.total, t3.totals 
       FROM invoice t1,salaries t2,table1 t3 
       WHERE t1.employeecode = salaries.employeecode AND 
       t1.employeecode = t3.employeecode 
       ORDER BY t1.employeecode ASC"; 

    $result = mysql_query($query,$con); 

    if(mysql_num_rows($result)>0){ 

     echo '<table><tr><th>Article title</th>&nbsp;</tr>'; 
     while($row=mysql_fetch_array($result)){ 
      //$postedon = strftime("%A %e %b %Y",strtotime($row['postedon'])); 
      echo '<h1><tr><td><a href="3.php?employeecode='.$row["employeecode"].'">'.$row["deparment"].'</a></td></tr></h1>'; 
     } 
+1

用'mysql_query($ con)'檢查錯誤# – pyrospade 2013-02-20 05:34:02

+3

歡迎來到Stack Overflow!請不要使用'mysql_ *'函數來編寫新的代碼。他們不再被維護,社區已經開始[棄用流程](http://goo.gl/q0gwD)。看到[紅色框](http://goo.gl/OWwr2)?相反,您應該瞭解[準備好的語句](http://goo.gl/orrj0)並使用[PDO](http://goo.gl/TD3xh)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/YXyWL)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/b2ATO)。另請參閱[爲什麼不應該在PHP中使用mysql函數?](http://goo.gl/J5jAo) – Daedalus 2013-02-20 05:34:06

+0

您的'mysql_query()'失敗並返回'FALSE'。確保你的'SELECT'在你正在使用的mysql或任何其他IDE(例如phpmyadmin)中工作 – peterm 2013-02-20 05:37:41

回答

2

$ result是boolean(false)導致您的查詢必須有問題。通過使用mysql_error()查詢得到錯誤幫助自己,

$result = mysql_query($query,$con) or die(mysql_error()); 

注意Please, don't use mysql_* functions in new code。他們不再維護and are officially deprecated

所以請使用PDOMySQLi(IMO PDO是路要走)

+0

謝謝你幫助我「rikesh」 – 2013-02-20 05:48:22

+0

別忘了如果您發現有用,請接受答案。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Rikesh 2013-02-20 06:25:57

+0

我得到了結果。但是,我爲每個人創建了2個不同的配置文件。但我得到一個人的相同配置文件的詳細信息。例如:sam&john具有不同的配置文件細節。但是當我打開sam的個人資料詳細信息時,它顯示了john的個人資料詳細信息。其實它在每個不同的配置文件中顯示單個細節。幫幫我吧。 – 2013-02-20 07:25:18

2

既然你混淆你的salariest2你必須引用它爲t2你的where子句中:

$query = "SELECT t1.employeecode, t1.employeename, t2.v, t2.w, t3.total, 
      t3.totals 
      FROM invoice t1,salaries t2,table1 t3 
      WHERE t1.employeecode = t2.employeecode AND 
      t2.employeecode = t3.employeecode 
      ORDER BY t1.employeecode ASC"; 
+1

我建議你解釋你的答案。 – Daedalus 2013-02-20 05:35:37

+0

在where子句中改變。 – ripa 2013-02-20 05:36:52

+0

非常感謝幫助我的人。 – 2013-02-20 05:58:33

0

它似乎你的查詢不工作,並且返回FALSE布爾值失敗。要檢查你需要在運行時動態 建成後,檢查您的查詢的原因按照以下步驟

$結果= mysql_query($查詢)或死亡($查詢「

」 .mysql_error());

檢查錯誤消息。似乎有些錯誤的列必須列入

0

試着改變你的薪水是T2 ..

WHERE t1.employeecode = salaries.employeecode AND 

WHERE t1.employeecode = t2.employeecode AND 

我不知道,但我知道,當我們做給一些什麼別名到表,我們的dbms將讀取該別名,而不是本地表名。