2013-06-24 55 views
0

我认识到这个问题在这里被多次询问,并且我尝试了所有可能的解决方案。我的查询可能会有一些固有的不正确的,为什么它会返回false,而不管我的查询是否返回数据?MySQL的行数总是返回false

$q_log_dates = "SELECT * FROM log_dates WHERE week_date ='" . $currentWeek . "'"; 
$q_log_dates_result = mysqli_query($connection, $q_log_dates); 
$numResults = mysqli_num_rows($q_log_dates_result); 

if ($numResults > 0) { 
    echo "data"; 
} else { 
    echo "no data"; 
} 
+5

不要混合MySQL和MySQLi ...他们不是“挑选和混合” –

+0

mysql_error()提供了什么吗? – Voitcus

+0

更新了上面的问题(代码)以反映解决方案。 – user1040259

回答

3

只使用面向对象的MySQLi函数。在你的情况下,$q_log_dates_result是一个对象,你可以使用它的属性。

$q_log_dates_result = mysqli_query($connection, $q_log_dates); //-Procedural 
//OR $q_log_dates_result = $connection->query($q_log_dates); //Object oriented 
if ($q_log_dates_result->num_rows > 0) { 
    echo "data"; 
} else { 
    echo "no data"; 
} 
+0

完美,谢谢! – user1040259

+1

如果你打算使用面向对象的PHP,你应该完全使用它。 – PHPglue

+0

含义使用$ db = new mysqli(域,用户名,密码,数据库);在不同的安全PHP页面上,并将其包含在您正在使用的那个页面中。然后你可以说$ res = $ db-> query(查询字符串在这里);此外,你应该$ res-> free();获得$ res-> num_rows和结果后的结果,以及$ db-> close();您的连接可获得更佳的服务器端性能 – PHPglue

1

mysqli_query返回对象的类型,其中mysql_num_rows需要参数1为资源。您不能将mysqli_ *函数与mysql_ *函数混合使用,它们不可互换。

我的强烈建议使用mysql_ *的,如已经提到的MySQLi下降,并坚持到其他图书馆

1

您正在使用

mysqli_query 

,所以$ numResults,你应该使用

mysqli_num_rows