【问题标题】:PHP: Code works on PHP 7.0 but not in PHP 7.1PHP:代码适用于 PHP 7.0,但不适用于 PHP 7.1
【发布时间】:2021-03-23 23:31:05
【问题描述】:

我有以下代码:

function qSELECT($query, $object = NULL){
    global $link;
    $result = mysqli_query($link, $query);
    $return = [];
    if($result){
        $num = mysqli_num_rows($result);
        for ($i=0; $i<$num; $i++){
            if(!is_null($object)){
                $row = mysqli_fetch_object($result);
            }else{
                $row = mysqli_fetch_array($result);
            }
            $return[$i]=$row;
        }
    }
    return $return;
}


function getAll($table){
    $query = "SELECT * FROM ".$table;
    $result = qSELECT($query);
    return $result;
}

还有另一个文件,它调用 getALL 来显示一个包含表中值的表。

<?php
        $Draseis = getAll("Draseis");   
        if($Draseis) foreach ($Draseis as $Draseis):
                ?>
        <tr>
        <td><?php echo $Draseis['title']?></td>
        <td><?php echo $Draseis['title']?></td>
        <td><?php echo $Draseis['text']?></td>
        <td><?php echo $Draseis['image1']?></td>
        <td><?php echo $Draseis['image2']?></td>
        <td><?php echo $Draseis['image3']?></td>
        <td><?php echo $Draseis['image4']?></td>
        <td><?php echo $Draseis['image5']?></td>


        <td><a href="edit-draseis.php?act=edit&id=<?php echo $Draseis['id']?>"><i class="glyphicon glyphicon-edit"></i></a></td>
        <td><a href="save.php?act=delete&id=<?php echo $Draseis['id']?>&cat=Draseis" onclick="return navConfirm(this.href);"><i class="glyphicon glyphicon-trash"></i></a></td>
        </tr>
<?php endforeach; ?>

在 PHP 7.0 中,当我回显它时,qSELECT 中的返回值 ($Draseis) 是一个“数组”,一切正常意味着显示所有 7 条记录。

然而,在 PHP 7.1 中,当我回显返回值 ($Draseis) 时,我得到 7 x A 作为结果“AAAAAAA”并且不显示任何记录。

知道为什么吗?

【问题讨论】:

  • 不是数组吗?如果你试图回显一个数组,你应该会得到一个错误。你看到了什么错误?
  • 那是我的问题。没有。当我在 7.0 中回显数组时,我得到文本“Array”,在 7.1 中,我得到“AAAAAAA”,如果我只回显 $Draseis['0],我得到 A。所以每个 A 都是一条记录,因为在 7.1 中有 7 条记录数据库。我的问题是,在 PHP 7.1 中,它返回 A 而不是我稍后可以使用 $Draseis['title'] 处理的行。

标签: php arrays object mysqli


【解决方案1】:

找到答案。我必须添加 MYSQLI_ASSOC

    if(!is_null($object)){
        $row = mysqli_fetch_object($result,MYSQLI_ASSOC);
    }else{
        $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
    }

【讨论】:

猜你喜欢
  • 2016-09-14
  • 2013-11-10
  • 2012-07-31
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多