2017-06-16 70 views
0

我有下面的查詢,一直工作得很好,直到現在,當我添加第二個where子句。但如果我嘗試在數據庫中有數據有相同的查詢SQL沒有得到第二個值

$query = "SELECT exam_venue AS venue FROM application WHERE level_apply = '".$levelappy."' and city_applied = '".$city."' GROUP BY venue HAVING COUNT(id) < 20 LIMIT 1"; 
      $class = mysql_query($query); 

      if (!$class) { // add this check. 
       die('Invalid query: ' . mysql_error()); 
      } 
      $row = mysql_fetch_array($class); 
      $class1 = $row['venue']; 
      dd($class1); 

上面的代碼總是返回null。我確實在查詢中有兩個變量的數據,但我不知道爲什麼查詢沒有采取這個城市。沒有城市它給出了結果,但是當我添加城市時它返回null。

即使我嘗試相同的查詢,而不會增加,而在數據庫返回會場返回null任何變量=「1A-1」

SELECT exam_venue AS venue FROM application WHERE level_apply = '1' and city_applied = 'Prishtinë' GROUP BY venue HAVING COUNT(id) < 20 
+0

請不要再使用'mysql_' API。使用[MySQLi](http://php.net/manual/en/book.mysqli.php)或[PDO](http://php.net/manual/en/book.pdo.php)準備好的語句。 – PeterMader

+0

使用這一次$ query =「SELECT exam_venue AS場地FROM應用程序WHERE level_apply = $ levelappy和city_applied = $ city GROUP BY場地HAVING COUNT(id)<20」; – Exprator

+0

我使用LIMIT 1,因爲我只想要第一行 –

回答

0

是您的$levelappy變量拼寫是否正確?我可以看到你的查詢中的列名是level_apply,你錯過了一個L?

而且,它可以幫助使用:

$query = "SELECT exam_venue AS venue 
FROM application 
WHERE level_apply = '{$levelapply}' 
AND city_applied = '{$city}' 
GROUP BY venue HAVING COUNT(id) < 20 
LIMIT 1" 

至於那麼你不必字符串連接在一起。

+0

不工作,並且是$ levelappy是正確的,因爲我從該視圖中獲得輸入 –

+0

查詢正在工作問題是,在我的數據庫中,city_applied以大寫字母ex。倫敦。如果我從倫敦轉到倫敦,它會起作用。 我如何解決這個問題與SQL? –

+0

您可以嘗試在WHERE語句中使用LOWER()函數。所以AND LOWER(city_applied)='{$ city}'讓我知道它是怎麼回事。 –