Предупреждение: недопустимое смещение строки: php [duplicate]

0

Я получаю php warring

Warning: Illegal string offset 'item_id' in

пытаясь исправить этот код

<?php 
error_reporting(0);
include ('includes/db.inc.php');
include ('includes/items.inc.php');

include ('header.php');
 $user_id=$_SESSION['user_id'];


   $sqll= "SELECT 'transcription.item_id' FROM transcription left JOIN items ON 'items.item_id' = 'transcription.item_tra_id';" ;
   $resultt= mysqli_query($conn,$sqll);
   $resultts= mysqli_num_rows($resultt);
   //echo $results; 
   $rers = mysqli_fetch_assoc($resultt);

   foreach ($rers as $rerss) {
    echo $rerss['item_id'] ;
   } 
   ?>

Я искал выяснение, что мне нужно обернуть ключ массива в кавычки, и что именно то, что я сделал, но все еще та же проблема, также я не знаю, правильны ли мои операторы SQL.

  • 0
    @RiggsFolly Это не дубликат, есть две проблемы под рукой, ОП неправильно попытался исправить проблему, используя кавычки вместо обратных галочек. Основная проблема здесь заключается в том, что не удается правильно выполнить итерацию набора результатов,
  • 0
    @ Geoffrey Dupe ссылка подходит для исправления проблемы, описанной в вопросе. Вы правы, есть несколько вопросов, которые нужно исправить. Есть и другие дубликаты, доступные для итерации набора результатов . Раскрыть этот вопрос только для того, чтобы мгновенно переспать с другим обманом - пустая трата времени. Если кто-то хочет добавить еще одну двойную ссылку в список, это нормально, но я лично не поддерживаю повторное открытие.
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

У вас есть две проблемы:

Обтекание столбца в одинарных кавычках превращает его в строку, а не в имя столбца, вам нужно обернуть ее в обратные ссылки, то есть:

$sqll= "SELECT 'transcription.item_id' FROM transcription left JOIN items ON 'items.item_id' = 'transcription.item_tra_id';" ;

Вы не правильно повторяете результат.

while($rerss = mysqli_fetch_assoc($resultt))
{
  print_r($rerss);
}

mysqli_fetch_assoc извлекает запись ONE и возвращает ее как массив столбцов, а не массив всех записей, ее нужно вызывать для каждой записи, которая находится в результирующем наборе.

См.: http://php.net/manual/en/mysqli-result.fetch-assoc.php

  • 0
    Может быть, псевдоним на поле тоже может помочь, но хороший ответ. Почему бы не while ($rerss = mysqli_fetch_assoc($resultt)) { ?
  • 0
    Теперь я получаю еще одну ошибку: Предупреждение: mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result, логическое значение
Показать ещё 4 комментария

Ещё вопросы

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