MySQL запрос возвращает true, но fetch_assoc не работает

0

Я использую PHP и MySQL (mysqli) в XAMPP, у меня есть выпадающий список, и пользователь должен выбрать один, затем используется запрос, чтобы найти идентификатор выбранного значения, но он не работает. Я уже сделал это еще три раза, и это сработало, но это не так.

    $sql = "SELECT foo_id FROM foo_table
WHERE foo_name = 'bar';";
    $res = $conn->query($sql);
    for ($i = 0; $i < 500; $i++) {
        $row = $res->fetch_assoc();
        echo $row[row["foo_id"]]
    }

Проблема в том, что fetch_assoc ничего не возвращает, хотя переменная $ res возвращает true

  • 4
    Почему вы делаете (неправильный) двойной индекс $row[row["foo_id"]] ? Это даже дает вам предупреждения (которые являются скрытыми ошибками). Проверьте ваши журналы и сделайте ваш код без ошибок, предупреждений или уведомлений.
  • 0
    То, что запрос SELECT был успешно выполнен, не означает, что в наборе результатов есть какие-либо данные. С num_rows поля num_rows вы можете проверить, насколько велик набор результатов.
Показать ещё 1 комментарий
Теги:
mysqli

2 ответа

0
$row = mysql_fetch_assoc($res);
$data = array();
$data = $row["foo_id"];
for ($i = 0; $i<500; $i++){
echo $data[$i];
}

Если вы не хотите загружать массив в массив данных, используйте его напрямую

$row = mysql_fetch_assoc($res);
for ($i = 0; $i<500; $i++){
echo $row["foo_id"][$i];
}

Цикл начнется с 1 до 499. Вы можете контролировать это, изменяя значение $ i, что лучше, особенно если вы не хотите ограничивать запрос оператором LIMIT, поэтому результаты будут ограничены $ i

0

Я не уверен, почему вы повторяете более 500 раз? это не имеет смысла.

Лучшая практика для извлечения данных из БД

$sql  = "SELECT foo_id FROM foo_table
          WHERE foo_name = 'bar'";
$res = $conn->query($sql);
if ($result->num_rows > 0) {
   // output data of each row
   while($row = $result->fetch_assoc()) {
      echo $row["foo_id"];
   }
 }
  • 0
    это был оригинальный код, 500 итераций - результат того, что я пытался решить проблему (неправильно (очевидно))
  • 0
    Кроме того, я только что заметил, что ваш пример кода имеет $ res и $ result, я думаю, что вы забыли изменить имя одной из переменных, вы можете изменить это
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню