Почему значение данных БД пусто для fetch_both в php

В моем проекте у меня есть проблема с БД

С методом FETCH_NUM все работает нормально, код содержимого:

$nodeName=$_POST['nodeInfo'];
include("DB.php");
$data=array();
$sql = "select * from GGtable where node='$nodeName';";
$sR=$conn->query($sql);
$rN=$sR->fetch(PDO::FETCH_NUM);

//while($rowSV=$sR->fetch(PDO::FETCH_BOTH)){
//  $data[]=$rowSV;
//}

echo '
 <table>
  <tr><td>'.$rN[0].'</td></tr>
 </table>
'

Но когда я пытаюсь использовать метод fetch_both, он не работает. код:

 $nodeName=$_POST['nodeInfo'];
include("DB.php");
$data=array();
$sql = "select * from GGtable where node='$nodeName';";
$sR=$conn->query($sql);

while($rowSV=$sR->fetch(PDO::FETCH_BOTH)){
  $data[]=$rowSV;
}

echo '
 <table>
  <tr><td>'.$data["node"].'</td></tr>
 </table>
'

$data["node"] пусто, ничего.

вроде ничего страшного, кто может мне помочь?

Вы пытаетесь расширить переменную в строке с одинарными кавычками, но PHP этого не сделает. См. php.net/manual/en/…. Я не знаю, как работал ваш первый пример, так как он также использует строки в одинарных кавычках. Вы уверены, что делитесь кодом, который тестируете?

Bill Karwin 18.03.2019 04:08

Для отладки я предлагаю вам print_r($row) убедиться, что у него есть как строковые, так и цифровые клавиши, и они написаны так, как вы ожидаете. Помните, что ассоциативные массивы PHP чувствительны к регистру, поэтому, если столбец называется NODE, вы не можете получить к нему доступ, как $node["node"]. Вы используете select * в своем запросе, поэтому мы никак не можем узнать, есть ли в вашей таблице этот столбец.

Bill Karwin 18.03.2019 04:10

Я ошибся, извините. я исправил это

stack 18.03.2019 04:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша проблема в том, что с этим утверждением:

$data[]=$rowSV;

вы создаете массив массивов. Таким образом, чтобы получить доступ к значению столбца node, вам действительно нужно использовать

<tr><td>'.$data[0]["node"].'</td></tr>

или замените 0 любой строкой данных, к которой вы хотите получить доступ.

Если у вас только одна строка, просто замените $data[]=$rowSV; на $data=$rowSV;, и ваш существующий код вывода будет работать нормально.

Другие вопросы по теме