【问题标题】:Getting a specific column and row from a fetched array从获取的数组中获取特定的列和行
【发布时间】:2016-09-19 15:10:02
【问题描述】:

我已经看到MYSQL - Select specific value from a fetched array 的答案,但它显示我的错误。

它在回显线上显示“注意:未定义的偏移量:1”。我不知道我做错了什么。

$qry = "Select Address, Phone from People where name='david'";

mysqli_connect('localhost' , 'root' , '' ,'database');

$result = mysqli_query(mysqli_connect('localhost' , 'root' , '' ,'database'), $qry);

mysqli_close(mysqli_connect('localhost' , 'root' , '' ,'database'));

$row = array();

while( $row[] = mysqli_fetch_array( $result ) );

echo $row[1]['Address'];
echo $row[1]['Phone'];

【问题讨论】:

  • 我正在尝试将结果集存储在一个数组中,然后通过设置行和列来获取我想要的数据。赞 $row[rowNumber][columnName]
  • 我删除了我的评论,你的while()循环确实是正确的,我没有注意到这个说法,$row = array();。问题是,您在while() 循环之前关闭了连接。并且不需要在每个地方都创建单独的连接,只需创建一个连接并在后续语句中使用返回的处理程序即可。
  • 不要赋值给while()条件中的数组变量。当您到达结果的末尾时,您最终将向包含 false 值的数组添加一个额外的元素。使用正常的成语while ($row = mysqli_fetch_array($result)) { $rows[] = $row; }

标签: php


【解决方案1】:

您打开了 3 次连接。 PHP 可能会读取错误的链接来获取您的查询。试试这个:

$qry = "Select Address, Phone from People where name='david'";

$ptr = mysqli_connect('localhost' , 'root' , '' ,'database');

$result = mysqli_query($ptr, $qry);

$row = array();

while( $row[] = mysqli_fetch_array( $result ) );

mysqli_close($ptr);

echo $row[1]['Address'];
echo $row[1]['Phone'];

【讨论】:

  • 将 mysqli_close 扔到最后一行,但仍然得到相同的结果。
  • @QiZhi 可能是从结果集中返回一行,因为... where name='david'。做var_dump($row); 看看你得到了什么。
  • 数组(大小=1)0 => 空。但是我做到了: while($row2 = mysqli_fetch_array($result)) { echo $row2['Address']."
    "; } 并返回 4 个结果。
  • 所以我猜这行“while($row[] = mysqli_fetch_array($result));”有问题因为数组中没有 4 行?
  • 也许$row首先是一个受保护的词!
【解决方案2】:

php 数组的索引从 0 开始。 如果只有一个结果,或者您想要第一个结果,它将位于 $row[0]

//displays the first line's result
echo $row[0]['Address'];
echo $row[0]['Phone'];

【讨论】:

  • 有超过 1 行,即使我使用 $row[0] 也没有输出。
猜你喜欢
  • 2017-03-26
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
相关资源
最近更新 更多