mySQLi Prepared Statement:Fetch()失败

时间:2011-09-15 05:47:05

标签: php mysqli prepared-statement fetch

我的查询无法获取。它在我的SQL控制台中运行得很好,所以我很茫然。这是代码。

$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 个答案:

答案 0 :(得分:1)

由于mysqli_stmt_fetch()方法可以返回nullfalse,您必须使用===检查返回的值是否为false(或者如果它是null或不是{。}}。否则,您将返回值null解释为错误代码,而不是。

此外,您的代码会在第一次fetch()调用时从结果中读取一行,但您不会以任何方式处理返回的行。您正在删除结果集的第一行,这可能不是您想要的。

如果您想知道结果集使用了多少行mysqli_stmt_num_rows