2009-10-20 111 views
3

我期待计数由下面使用的mysqli /预处理语句查询返回的记录数:

$mysql = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die('There was a problem connecting to the database'); 
$stmt = $mysql->prepare('SELECT id,vcref,jobtitle,jobtype,jobintro,closingdate FROM jobs WHERE active = 1'); 
$stmt->execute(); 
$stmt->store_result; 
$stmt->bind_result($id,$vcref,$jobtitle,$jobtype,$jobintro,$closingdate); 
$stmt->fetch(); 
$totalLiveJobs = $stmt->num_rows(); 

输出是consistantly 0

+2

多少,如果你直接在数据库执行它应该返回? – Ismael 2009-10-20 14:00:10

+0

我知道有2行相匹配的查询条件 - 这是一个思想家 – 2009-10-20 14:14:04

回答

8

你”在OOP风格中重新使用mysql_stmt_num_rows,因此将其作为函数调用是不正确的。尝试:

$stmt->num_rows; 

代替:

$stmt->num_rows(); 

基本上,你正在试图获得该值:

class mysqli_stmt { 

    int num_rows 

} 

此外,

$stmt->store_result; 

应该是:

$stmt->store_result(); 
+0

THX输入M8 - 我仍然得到使用OOP风格, 我想我做对了吗?在最后一行代码中?试图将值分配给一个变量? – 2009-10-20 14:16:01

+0

没有,$ stmt-> NUM_ROWS()是调用$语句中不存在的方法,而$ stmt-> NUM_ROWS引用(这确实有一个值)的属性。见http://phpbuilder.com/manual/en/function.mysqli-stmt-num-rows.php – karim79 2009-10-20 14:21:57

+0

THX卡里姆 - 现在我明白了,(用于连接额外的荣誉太)。 它现在工作得很好 - THX再次交配:) – 2009-10-20 14:27:29