【问题标题】:PDO throws an Notice: Undefined index when using fetchAll in a WHILE loopPDO 抛出一个通知:在 WHILE 循环中使用 fetchAll 时未定义索引
【发布时间】:2018-01-06 10:46:04
【问题描述】:

我是 PHP 世界的新手,在这里我需要一些帮助。 我正在尝试从数据库中提取数据,我正在使用 PDO 来完成它。 我有以下PHP代码没有成功,抛出错误通知:

$pairingsistem='1'; 
$pecahan='1';

if($pairingsistem == "1"){

$skrg=time();
$tablaz = $pdo->query("SELECT * FROM tb_gh where saldo > 0 and status='pending' order by id ASC limit 0,1");
while ($registroz = $tablaz ->fetchAll(PDO::FETCH_ASSOC)){ 
//use $results   
$kurirz=$registroz["username"]; //line 47 starts here
$biayaz=$registroz["saldo"];
$idnyaz=$registroz["id"];
$bankeem=$registroz["bank"];
$norekeem=$registroz["norek"];
$bitcoineem=$registroz["bitcoin"];
$pmeem=$registroz["perfectmoney"];
$fasapayeem=$registroz["fasapay"];
$namaeem=$registroz["nama"];
$phoneeem=$registroz["phone"];
$emaileem=$registroz["email"];
$paketzeem=$biayaz*$pecahan;
$surabaya=$paketzeem/$pecahan;
//shortline

注意:未定义索引:用户名在 /home/u427750052/public_html/automatch.inc.php 在第 47 行

注意:未定义的索引:saldo in /home/u427750052/public_html/automatch.inc.php 在第 48 行

注意:未定义的索引:id in /home/u427750052/public_html/automatch.inc.php 在第 49 行

注意:未定义的索引:银行输入 /home/u427750052/public_html/automatch.inc.php 在第 50 行

注意:未定义的索引:norek in /home/u427750052/public_html/automatch.inc.php 在第 51 行

注意:未定义索引:比特币在 /home/u427750052/public_html/automatch.inc.php 在第 52 行

注意:未定义的索引:perfectmoney in /home/u427750052/public_html/automatch.inc.php 在第 53 行

注意:未定义索引:fasapay in /home/u427750052/public_html/automatch.inc.php 在第 54 行

注意:未定义的索引:nama in /home/u427750052/public_html/automatch.inc.php 在第 55 行

注意:未定义的索引:电话输入 /home/u427750052/public_html/automatch.inc.php 在第 56 行

注意:未定义的索引:电子邮件 /home/u427750052/public_html/automatch.inc.php 在第 57 行

这是警告。尽管到目前为止,我已经尽我所能解决了这方面的问题。

【问题讨论】:

  • 谢谢克里斯。我认为它有效。所以如果我使用 fetchall,我只是在 '$registroz = $tablaz ->fetchAll(PDO::FETCH_ASSOC);'
  • “不要使用 fetchAll 循环、使用 fetch 循环或 fetchall” - @chris85 你说不要使用 fetchAll 但说“或 fetchall”`,错字?这有点令人困惑,哈哈
  • 谢谢大家。我认为问题已经解决了。 :-)
  • @chris85 我建议您为此提供一个(详细的)答案,因为未定义的索引通常用于用错误显示来欺骗这种性质的问题,不包括这一点。最近添加了一个与 db 相关的答案,但未涵盖此特定问题。
  • 对于任何想要将此问题标记为与常用的undefined index Q&A 重复的人,这不是它的重复,这是一个特殊情况。

标签: php mysql pdo undefined-index


【解决方案1】:

你的whilefetchAll 把你丢在这里了。您需要循环 fetchfetchall 然后遍历返回的结果。

所以要么:

while ($registroz = $tablaz ->fetch(PDO::FETCH_ASSOC)){ 

$registroz = $tablaz ->fetchAll(PDO::FETCH_ASSOC);
foreach($registroz as $row) {

但由于您只返回 1 行,因此您不需要循环或 fetchall

$registroz = $tablaz ->fetch(PDO::FETCH_ASSOC);

应该可以解决问题。

【讨论】:

  • 在使用 PDO 时看到未定义的索引通知显示非常有趣。我自己几乎不使用 PDO(哦,我忍受在这里被某人批评哈哈哈!!)。这对我来说是第一次。
  • 谢谢。用我的话来说,这真的是最好的解释方式。 :-)
  • @Fred-ii- $registroz with fetchall 是一个多维数组,名字在第二层。我认为$kurirz=$registroz[0]["username"]; 也可以。
  • @chris85 是的。顺便说一句,你能投票给this comment吗?
猜你喜欢
  • 2013-10-29
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 2010-12-03
  • 2019-05-02
  • 1970-01-01
相关资源
最近更新 更多