2017-03-01 57 views
0

我要做的是從兩個mysql表中選擇列。 此查詢不從php腳本(我需要s.opis列)工作:表別名不能從php工作

$SQL="SELECT h.dzien, h.sektor, s.opis, h.start, h.stop, h.p, h.reg_date FROM harmonogram h,sektory s WHERE h.sektor=s.sektor AND h.dzien='".$dzien."' AND h.start='".$start."' ORDER BY h.dzien, h.sektor, h.start, h.stop;"; 
$wynik = mysql_query($SQL) 
or die('Błąd zapytania'); 

,但是,當我在MySQL數據庫運行SQL直接,它工作正常。

 
mysql> SELECT h.dzien, h.sektor, s.opis, h.start, h.stop, h.p, h.reg_date FROM harmonogram h,sektory s WHERE h.sektor=s.sektor AND h.dzien='Sun' AND h.start='08:00' ORDER BY h.dzien, h.sektor, h.start, h.stop; 
+-------+--------+------+----------+----------+---+---------------------+ 
| dzien | sektor | opis | start | stop  | p | reg_date   | 
+-------+--------+------+----------+----------+---+---------------------+ 
| Sun |  1 | tyl | 08:00:00 | 08:15:00 | 0 | 2017-03-01 20:23:35 | 
+-------+--------+------+----------+----------+---+---------------------+ 
1 row in set (0.00 sec) 

這是工作正常查詢的以前的版本,但它並沒有顯示OPIS列

$SQL="SELECT dzien, sektor, start, stop, p, reg_date FROM harmonogram WHERE dzien='".$dzien."' AND start='".$start."' ORDER BY dzien, sektor, start, stop;"; 
$wynik = mysql_query($SQL) 
or die('Błąd zapytania'); 

我認爲這個問題可能是與aliasess。

對此有幫助嗎?

+2

您需要停止使用'mysql_ *'功能。它們已被棄用多年,甚至不存在於當前的PHP版本中。請研究一下[PHP數據對象](http://php.net/manual/en/book.pdo.php),簡稱PDO,用於更現代的方法。 – sidyll

+0

你確定輸入的數據是一樣的嗎?我在PHP腳本的SQL字符串中看到插值。另外,你如何使用這些數據?你是如何斷定它「不起作用」的?你收到任何錯誤? – sidyll

+0

我回應$ SQL並複製粘貼到MySQL。我從死命令得到錯誤信息。 – bzc0fq

回答

0

添加作爲MacPrawn建議

$wynik = mysql_query($SQL) or die(mysql_error()); 

把更多的光上顯示錯誤消息。

這是mysql表privillges問題。 現在解決了。

謝謝大家!