PDO 在 WHILE 循环中使用 fetchAll 时抛出通知:未定义索引

PDO throws an Notice: Undefined index when using fetchAll in a WHILE loop

提问人:MK Smith 提问时间:7/31/2017 最后编辑:Funk Forty NinerMK Smith 更新时间:7/31/2017 访问量:1379

问:

我是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 /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 /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

这是警告。尽管到目前为止,我已经在我的知识范围内解决了所有问题。

php mysql pdo 未定义索引

评论

0赞 MK Smith 7/31/2017
谢谢克里斯。我认为它奏效了。因此,如果我使用 fetchall,我只是在 '$registroz = $tablaz ->fetchAll(PDO::FETCH_ASSOC);'
1赞 Funk Forty Niner 7/31/2017
“不要用 fetchAll 循环,用 fetch 循环,或者 fetchall”——@chris85 你说不使用,但说“或 fetchall”,错别字?这有点令人困惑,哈哈fetchAll
0赞 MK Smith 7/31/2017
谢谢大家。我认为问题已经解决。:-)
1赞 Funk Forty Niner 7/31/2017
@chris85我建议你对此给出一个(详细的)答案,因为通常用于用错误显示来欺骗这种性质的问题的未定义索引并不涵盖这一点。最近添加了一个与数据库相关的答案,但它没有涵盖这个特定问题。
6赞 Funk Forty Niner 7/31/2017
对于任何想要将此问题标记为常用问答重复的人来说,这不是重复的问题,而是一个特殊情况。undefined index

答:

3赞 chris85 7/31/2017 #1

你把你扔在这里。您需要循环访问或遍历返回的结果。whilefetchAllfetchfetchall

所以要么:

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);

应该可以解决问题。

评论

0赞 Funk Forty Niner 7/31/2017
在这样使用 PDO 时,看到未定义的索引通知显示非常有趣。我自己几乎不使用 PDO(哦,我站在被这里的人批评哈哈哈!!这对我来说是第一次。
0赞 MK Smith 7/31/2017
谢谢。用我的话来说,这真的是最好的解释方式。:-)
2赞 chris85 7/31/2017
@Fred-ii- 带有 fetchall 是一个多维数组,名称位于第二级。我想也会起作用。$registroz$kurirz=$registroz[0]["username"];
1赞 Funk Forty Niner 7/31/2017
@chris85 是的。顺便说一句,你能给这个评论投赞成票吗?