2017-06-16 4 views
0

2番目のwhere句を追加すると、これまでうまく動作していた以下のクエリがあります。sqlが2番目の値を取得しない

$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を返しますが、データベース内で同じクエリを実行しようとするとそこにデータがあります。私はクエリの2つの変数のデータを持っていますが、なぜクエリが都市を全く取っていないのかわかりません。都市がなければ結果が得られますが、都市を追加すると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会場のアプリケーションからどこにlevel_apply = $ levelappyとcity_applied = $ city GROUP BY会場HAVING COUNT(ID)<20"; – Exprator

+0

私はLIMIT 1を使用します。最初の行がほしいからです。 –

答えて

0

を返しながら、それはnullを返しますが、あなたの$levelappy変数が正しい綴らですか?あなたのクエリの列名がlevel_applyであることがわかります。

また、それを使用するのを助けることができる:

$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が大文字であるという問題でした。ロンドン。ロンドンからロンドンに変わったら、うまくいくでしょう。 この問題をSQLでどのように解決できますか? –

+0

WHEREステートメントでLOWER()関数を使用できます。それゆえに(city_applied)= '{$ city}'それがどうなるか教えてください。 –

関連する問題