Подготовленный оператор MySQLi: ошибка Fetch () - PullRequest
0 голосов
/ 15 сентября 2011

Мой запрос не удается получить. Это прекрасно работает в моей консоли 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 Ответ

1 голос
/ 15 сентября 2011

Поскольку метод mysqli_stmt_fetch () может возвращать null и false, вы должны использовать ===, чтобы проверить, является ли возвращаемое значение false или нет (или оно * 1007). * или нет). В противном случае вы интерпретируете возвращаемое значение null как код ошибки, а это не так.

Кроме того, ваш код читает одну строку из результата с вашим первым вызовом fetch(), но вы никак не обрабатываете возвращенную строку. Вы отбрасываете первый ряд вашего набора результатов, который может быть не тем, что вам нужно.

Если вы хотите узнать, сколько строк использует набор результатов, mysqli_stmt_num_rows .

...