如何在PHP5.3中从查询中获取对象数组?

如何在PHP5.3中从查询中获取对象数组?,php,Php,我需要一个函数从查询中检索数据,并将该信息发送到请求加载表(html)的页面,我正在尝试您看到的内容,但没有得到结果 类PHP HTML(PHP) 关注建议和帮助 谢谢大家!! 问候 mauriciohz您需要将每个对象添加到数组中并返回该数组。将getProducts函数更改为如下内容: function getProducts() { $mysqli = new mysqli("localhost", "root", "usbw", "Datos"); if (mysq

我需要一个函数从查询中检索数据,并将该信息发送到请求加载表(html)的页面,我正在尝试您看到的内容,但没有得到结果

类PHP

HTML(PHP)


关注建议和帮助

谢谢大家!! 问候


mauriciohz

您需要将每个对象添加到数组中并返回该数组。将getProducts函数更改为如下内容:

function getProducts() {
    $mysqli = new mysqli("localhost", "root", "usbw", "Datos");
    if (mysqli_connect_errno()) {
        printf("Error in conection: %s\n", mysqli_connect_error());
        exit();
    }
    $query = "SELECT Id,sku,name,price FROM products";
    $objects = array();
    if ($result = $mysqli->query($query)) {
        $i = 0;
        while ($obj = mysqli_fetch_object($result)) {
            $object = new stdClass;
            $object->Id = $obj["Id"];
            $object->sku = $obj["sku"];
            $object->name = $obj["name"];
            $object->price = $obj["price"];
            $objects[] = $object;
        }
    }
    $mysqli->close();
    return $objects;
}
while ($obj = mysqli_fetch_object($result)) {
    $objects[] = $obj;
}
另外,正如Mark B在评论中所提到的,实际上不需要创建新对象来存储
mysqli\u fetch\u对象调用的结果,至少在当前编写代码时是这样。因此while循环实际上可以简化为如下内容:

function getProducts() {
    $mysqli = new mysqli("localhost", "root", "usbw", "Datos");
    if (mysqli_connect_errno()) {
        printf("Error in conection: %s\n", mysqli_connect_error());
        exit();
    }
    $query = "SELECT Id,sku,name,price FROM products";
    $objects = array();
    if ($result = $mysqli->query($query)) {
        $i = 0;
        while ($obj = mysqli_fetch_object($result)) {
            $object = new stdClass;
            $object->Id = $obj["Id"];
            $object->sku = $obj["sku"];
            $object->name = $obj["name"];
            $object->price = $obj["price"];
            $objects[] = $object;
        }
    }
    $mysqli->close();
    return $objects;
}
while ($obj = mysqli_fetch_object($result)) {
    $objects[] = $obj;
}

您需要将每一行保存到一个数组中。不要忘记,您正在生成一个对象数组,无法使用方括号访问其元素:

class Products
{
    public $Id;
    public $sku;
    public $name;
    public $price;

    var $function_result = array();

    public function getProducts () {
        $products = array();
        $mysqli = new mysqli("localhost", "root", "usbw", "Datos");

        if (mysqli_connect_errno()) {
            printf("Error in conection: %s\n", mysqli_connect_error());
            exit();
        }

        $query = "SELECT Id,sku,name,price FROM products";

        if ($result = $mysqli->query($query)) {
            while ($obj = mysqli_fetch_object($result)) {
                $object = new stdClass;
                $object->Id = $obj["Id"];
                $object->sku = $obj["sku"];
                $object->name = $obj["name"];
                $object->price = $obj["price"];

                $products []= $object;
            }
        }

        $mysqli->close();

        return $products;
    }
}
使用箭头操作符访问对象属性:

require_once 'Clases/productos.class.php';
$almacen = new Productos();
$productos = $almacen->getProducts();

foreach ($productos as $producto) { ?>
    <p><?php echo htmlspecialchars($producto->name)></p>
<?php }
require_once'Clases/productos.class.php';
$almacen=新产品();
$productos=$almacen->getProducts();
foreach($productos作为$producto){?>

无论如何,执行所有这些$object->which赋值都没有什么意义。fetch\u对象已经返回了一个stdobject,所以
$objects[]=$obj
是所有需要的。@MarcB这是一个公平的观点,但也有可能这只是代码的简化版本,可能还有其他原因需要构造一个新对象。@MarcB我确实认为这值得一提,所以我在答案中添加了您的建议。谢谢。