В моем проекте у меня есть проблема с БД
С методом 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"] пусто, ничего.
вроде ничего страшного, кто может мне помочь?
Для отладки я предлагаю вам print_r($row) убедиться, что у него есть как строковые, так и цифровые клавиши, и они написаны так, как вы ожидаете. Помните, что ассоциативные массивы PHP чувствительны к регистру, поэтому, если столбец называется NODE, вы не можете получить к нему доступ, как $node["node"]. Вы используете select * в своем запросе, поэтому мы никак не можем узнать, есть ли в вашей таблице этот столбец.
Я ошибся, извините. я исправил это






Ваша проблема в том, что с этим утверждением:
$data[]=$rowSV;
вы создаете массив массивов. Таким образом, чтобы получить доступ к значению столбца node, вам действительно нужно использовать
<tr><td>'.$data[0]["node"].'</td></tr>
или замените 0 любой строкой данных, к которой вы хотите получить доступ.
Если у вас только одна строка, просто замените $data[]=$rowSV; на $data=$rowSV;, и ваш существующий код вывода будет работать нормально.
Вы пытаетесь расширить переменную в строке с одинарными кавычками, но PHP этого не сделает. См. php.net/manual/en/…. Я не знаю, как работал ваш первый пример, так как он также использует строки в одинарных кавычках. Вы уверены, что делитесь кодом, который тестируете?