在php

时间:2016-01-16 15:53:54

标签: php warnings offset

使用mysqli_fetch_array()循环打印for的值时发生未定义的偏移错误:

代码:

$con=mysqli_connect($serverid,$useid,$passwordid,$dbid);<br>
$fieldcheck= "Select * from userregistrationform";<br>
$execfield=mysqli_query($con,$fieldcheck);<br>
if(mysqli_num_rows($execfield)>0) {
    $idcheck= "Select ChangeID from userregistrationform";
    $execq0=mysqli_query($con,$idcheck);
    $idcmp=mysqli_fetch_array($execq0);
    $idlength=count($idcmp);
    echo $idlength;
    for($x=0;$x < $idlength;$x++) {
        echo $idcmp[$x];
    }

注:

  1. ChangeID是我数据库中的一列。
  2. 使用

    时,代码可以正常工作
    while($idcmp=mysqli_fetch_array($execq0)) {
        echo $idcmp['ChangeID'];
    }
    
  3. 但如果我使用for循环,那么为什么会出现错误会很有帮助。

2 个答案:

答案 0 :(得分:1)

当您打印$idcmp时,您会看到以下内容:

array('ChangeID' => 100)

请参阅,数组中的键是ChangeID

当你这样做时

for($x=0;$x < $idlength;$x++) {
    echo $idcmp[$x];
}

您尝试访问值为0的密钥。但0中没有关键$idcmp。这就是您收到offset错误的原因。

答案 1 :(得分:0)

mysqli_fetch_array()的默认结果类型参数是MYSQLI_BOTH,这意味着如果没有传递任何特定的结果,您将获得结果作为数值数组和关联数组(组合在一个数组中)参数。

尝试更改此内容:

$idcmp=mysqli_fetch_array($execq0);

进入这个:

$idcmp=mysqli_fetch_array($execq0,MYSQLI_NUM);