gpt4 book ai didi

php - 我到底如何用数据库中的实际值返回这些数组?继续出现空白

转载 作者:行者123 更新时间:2023-11-30 22:48:53 26 4
gpt4 key购买 nike

因此,最终目标是使用这些类中的函数将产品打印为表中的对象,但输出是一个具有正确数量的行/列的表,但它们是空白的。我花了 3 个小时试图解决这个问题,但我很困惑。三个文件

产品.php

<?php

class Product
{
protected $product_id;

protected $product_name;

protected $product_price;

public function __construct($product_id,$product_name, $product_price = '')
{
$this->setProductID($product_id);
$this->setProductName($product_name);
$this->setProductPrice($product_price);

}


public function getProductID() {
return $this->product_id;
}
public function getProductName() {
return $this->product_name;
}

public function getProductPrice() {
return $this->product_price;
}

public function setProductID($product_id)
{
$this->product_id = $product_id;
}
public function setProductName($product_name)
{
$this->product_name= $product_name;
}

public function setProductPrice($product_price)
{
$this->product_price= $product_price;
}


}

ProductMapper.php

<?php

class ProductMapper
{
public function getProducts()
{
$dbConn = getDbConnection();

$stmt = $dbConn->prepare("SELECT * FROM product");
$stmt->execute();

$outArray = array();

while ($row = $stmt->fetch()) {
$outArray[] = new Product($row['product_id'], $row['product_name'], $row['product_cost']);
}

return $outArray;
}
}

和输出它的 Index.php。

<?php

require('classes/functions.php');
require('classes/Product.php');
require('classes/ProductMapper.php');

$productMapper = new ProductMapper();
$rows = $productMapper->getProducts();

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Product</title>


</head>
<body>


<tbody>
<?php

foreach ($rows as $row) {
echo "<tr>";
echo "<td>{$row->getProductID($this)}</td>";
echo "<td>{$row->getProductName($id)}</td>";
echo "<td>{$row->getProductPrice($id)}</td>";
echo "</tr>";
}
?>
</tbody>
</table>

</body>
</html>

最佳答案

您提供的代码存在一些小问题,无法正常运行。您是否设置了“error_reporting”error-reporting

索引.php :

  • “getProduct”方法不接受任何参数。所以你不应该用任何参数调用它们。

ProductMapper.php :

  • 为了保持一致性,我将“product_cost”列重命名为“product_price”。
  • 我在构造函数中注入(inject)了数据库连接并使它成为一个属性。为任何 future 的方法提供连接。

一些示例输出:

pid01   name-pid01  23.34
pid02 name-pid02 101.67

这是新脚本...

索引.php

require('classes/functions.php');
require('classes/Product.php');
require('classes/ProductMapper.php');

$productMapper = new ProductMapper(getDbConnecton());
$rows = $productMapper->getProducts();

// note: the 'getProductID', 'getProductName' and 'getProductPrice' methods
// do not accept or need, any parameters.

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Product</title>

</head>
<body>

<table>
<tbody>
<?php

foreach ($rows as $row) {
echo "<tr>";
echo "<td>{$row->getProductID()}</td>";
echo "<td>{$row->getProductName()}</td>";
echo "<td>{$row->getProductPrice()}</td>";
echo "</tr>";
}
?>
</tbody>
</table>

// ProductMapper.php
class ProductMapper
{
/**
* @var PDO
*/
private $dbConn = null;

public function __construct(PDO $pdo)
{
$this->dbConn = $pdo;
}

public function getProducts()
{
$dbConn = $this->dbConn;

$stmt = $dbConn->prepare("SELECT * FROM product");
$stmt->execute();

$outArray = array();

while ($row = $stmt->fetch()) {
$outArray[] = new Product($row['product_id'], $row['product_name'], $row['product_price']);
}

return $outArray;
}
}

关于php - 我到底如何用数据库中的实际值返回这些数组?继续出现空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28737255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com