Как выводить данные запроса

#php #mysql #pdo

#php #mysql #pdo

Вопрос:

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

ПРОБЛЕМА: я не могу выводить данные запроса.

Это моя последняя итерация кода:

 try {
    $link = new PDO('mysql:host=localhost;dbname=users_db', 'root', '56235623');
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
$sql = $link->prepare('SELECT * FROM users');
$sql->execute();

$result = $sql->fetchAll(PDO::FETCH_ASSOC);

foreach ($result as $key=>$value){
    echo $key.$value;
}
  

Вот вывод:

Обратите внимание: преобразование массива в строку в C:xampphtdocsMyProjectIncludescn.php в строке 23 0Array Обратите внимание: преобразование массива в строку в C:xampphtdocsMyProjectIncludescn.php в строке 23 1Array Обратите внимание: преобразование массива в строку в C:xampphtdocsMyProjectIncludescn.php в строке 23 2Array Обратите внимание: преобразование массива в строку в C:xampphtdocsMyProjectIncludescn.php в строке 23 3Array

Комментарии:

1. проверьте here.mysqltutorial.org/php-querying-data-from-mysql-table

2. согласно вашему сообщению об ошибке, значение $ — это массив, который вы просто не можете повторить: foreach ($result как $key=> $value){

Ответ №1:

fetchAll возвращает 2-мерный массив. Первое измерение — это строки, второе измерение — столбцы. Итак, вам нужны вложенные циклы:

 foreach ($result as $i => $row) {
    echo "Row: $in";
    foreach ($row as $key => $value) {
        echo "$key: $value; ";
    }
}
  

Ответ №2:

$value является ли массив, измените на:

 foreach ($result as $key=>$value){
    echo $key;
    //check what $value contains
    print_r($value);
    echo "<br />";
}
  

Ответ №3:

Как следует из вашего уведомления, вы пытаетесь преобразовать массив в строку. Если вы просто хотите распечатать содержимое $result переменной, вы можете использовать:

 var_dump($result);
  

или

 print_r($result);
  

Если вы хотите использовать foreach для печати каждого значения в своем собственном формате:

 foreach ($result as $key=>$values){
    echo "Key: " , $key, " Values:", implode(", ", $values), "<br />";
}
  

implode Метод объединит все значения в массиве, используя «, » в качестве связующего элемента.

Если вы хотите выполнить итерацию по своему $values массиву, вам следует взглянуть на ответ Бармара.