2017-06-16 76 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}'让我知道它是怎么回事。 –