2011-09-15 82 views
0

我的查询无法取回。它在我的SQL控制台中工作得很好,所以我不知所措。这是代码。mySQLi准备语句:取()失败

$q_st = "SELECT tryouts.playerFName,tryouts.playerLName,tryouts.mainEmail, 
tryouts.secondEmail, players.number FROM tryouts LEFT JOIN players ON 
players.userID=tryouts.userID WHERE players.team = ? 
ORDER BY tryouts.playerLName"; 

$stmt = $GLOBALS['m']->prepare($q_st); 
$stmt->bind_param("s",$GLOBALS['c_team']); 
$stmt->execute(); 
$stmt->bind_result($pfn,$pln,$em,$em2,$num); 

if($stmt->fetch()==false) 
{ 
echo($GLOBALS['m']->error . $GLOBALS['m']->sqlstate ." Haha It doesn't work and YOU  don't know why!!!"); 
} 
else 
{ 
while($stmt->fetch())     { 
static $count3; 
echo ($pfn . " " . $pln . " " . $num . "<input type=\"checkbox\" class=\"player\" value=\"" . $em ."\" id=\"player ". ++$count3 . "\"><br />"); 
}    
} 

结果是“00000哈哈它不起作用,你不知道为什么!!!”

我测试了所有其他的stmt参数,它们都通过了成功。 任何想法?

回答

1

由于mysqli_stmt_fetch()方法可以返回nullfalse你必须使用===检查返回值false或没有(或如果它是null与否)。否则,您会将返回值null解释为错误代码,但事实并非如此。

另外你的代码读取结果一行与第一fetch()电话,但你不以任何方式处理返回的行。您正在放弃结果集的第一行,这可能不是您想要的。

如果你想知道结果集有多少行使用mysqli_stmt_num_rows

+0

mysqli_stmt_num_rows返回0.受影响的行返回-1。没有错误或错误。还有什么想法? – narotosensei

+0

我与它搞乱了一下,不管是什么原因,它现在的工作。去搞清楚。感谢您的有用建议! – narotosensei