Почему этот запрос MySQL Select возвращает ошибку, но прекрасно выполняет выбор? - PullRequest
0 голосов
/ 03 сентября 2011

У меня есть этот PHP с MySQL SELECT:

$q = "SELECT signup_id, email 
        FROM signups 
       LIMIT ". $inNum;
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));

if (mysqli_affected_rows($dbc) >= 1) {
    while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {

Это ошибка, которую я получаю:

mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given

Я не уверен, почему я получаю эту ошибку, потому чтокод работает отлично.

Есть идеи?

Ответы [ 3 ]

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

mysqli_affered_rows ()

Возвращает количество строк, затронутых последним запросом INSERT, UPDATE, REPLACE или DELETE.

Измените значение на mysqli_num_rows и передайте результат запроса:

$q = "SELECT signup_id, email FROM signups LIMIT ".$inNum;
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));

if (mysqli_num_rows($r) >= 1) {
    while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
1 голос
/ 03 сентября 2011

И Мэтт, и Тони звучат как хорошие ответы, если их объединить.

 if ($r = mysqli_query( ... )) {
      if (mysql_num_rows($r) >= 1) {
           while ($row = mysql_fetch_array($r, ..) { 
                 ...
           } 
      }
 }
1 голос
/ 03 сентября 2011

Мне кажется, вы устанавливаете значение $r как логическое значение с or, поэтому массив результатов обрабатывается И выдается ошибка, потому что $r выглядит так, как будтотолько когда-либо будет булево значение.Я могу ошибаться, но для начала это выглядит как сбивающая с толку логика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...