如何使用PHP从MYSQL同时获取和显示数据

时间:2019-04-20 06:28:42

标签: php mysql

我无法使用PHP OOP从MYSQL数据库中的表中显示数据。但是,我不确定是否无法显示数据,因为我一开始实际上并没有获取数据。

我尝试仅使用PHP数组而不使用HTML来获取和显示数据,但我发现这是行不通的,因为我没有使用HTML列表标签来格式化数据库中的数据。我曾经考虑过使用HTML表,但是我看到使用列表从数据库中进行显示的方式之前已经工作了几次,而且我想知道为什么这样做不起作用。

我已经测试过MYSQL连接,并且确实存在。

* M_PRODUCTS.PHP *

<?php  

class Products 
{
    private $Conn;
    private $db_table = "toys"; 

    function __construct() {
        // here we're making sure that the connection from $conn in "init.php" is transferred 
        // into our own private $conn property for usage in this object
        global $Conn; 
        $this->Conn = $Conn;
    }

        // fetches and displays all products from db
        public function fetch_all_products($id = NULL)
        { 
            if ($id == NULL)
            {
                $data = []; 
                if ($result = $this->Conn->query("SELECT * FROM " . $this->db_table . " ORDER BY name"))
                {
                    if ($result->num_rows > 0)
                    {
                        while ($row = $result->fetch_array())
                        {
                            $data = array(
                            "id" => $row["product_id"],
                            "name" => $row["name"],
                            "price" => $row["price"],
                            "image" => $row["image"]
                            ); 
                        } 
                        return $data; 
                    }
                else 
                {
                    return "<h1>Oops... Something went wrong!</h1>"; 
                }
            }
        }
    }
}

* INDEX.PHP *

<?php include("init.php"); 
      include("models/m_products.php"); 
?>

<body>
    <div id="whitespace">

        <?php

$products = fetch_all_products();

?>
      <?php foreach($products as $row) { ?>
      <tr>
        <td><?php echo $row->name; ?></td>
        <td><?php echo $row->price; ?></td>
        <td><img src="<?php echo $row->image_path(); ?>" alt="<?php echo $row->name; ?>" width="100" /></td>

      </tr>
      <?php } ?>

    </div>
</body>

我希望我的产品图片会显示在index.html文件中。但是,什么也没有出现。

我也在JavaScript控制台中收到此错误消息:无法加载资源:服务器以404(未找到)状态响应。这将解释很多,但是正如我所说,我测试了数据库连接,并且可以正常工作。如果我不使用JavaScript,则不确定该消息如何或为何从JavaScript控制台发出。我认为还是值得一提。

4 个答案:

答案 0 :(得分:0)

根据您的代码,该函数返回一些数据,但事实是您尚未打印出来,因此可以使用return或直接放入

来代替函数中的echo
echo $Products->fetch_all_products();

答案 1 :(得分:0)

奇怪的代码,我会做类似的事情。 1。首先,该功能找到全部() 2。 index.php 回声-输出

<?php

$products = find_all_products();

?>
      <?php foreach($products as $row) { ?>
      <tr>
        <td><?php echo $row->name; ?></td>
        <td><?php echo $row->price; ?></td>
        <td><img src="<?php echo $row->image_path(); ?>" width="200" /></td>

      </tr>
      <?php } ?>

答案 2 :(得分:0)

更正您的比较运算符。  if ($id == NULL) 代替

if ($id = NULL)

在功能fetch_all_products()中。

更正index.php中的代码以使用print_r()打印数组或遍历结果数组。

答案 3 :(得分:0)

我在您的代码中可以看到2个主要问题 1)您需要从以下位置更新比较运算符

if ($id = NULL)

if ($id == NULL)

2)您需要从以下位置更新index.php中的代码

<body>
    <div id="whitespace">
        <h1><?php echo shop_name ?></h1>

        <?php

        echo $Products->fetch_all_products();

        ?>
    </div>
</body>

<body>
    <div id="whitespace">

        <?php

$products = find_all_products();

?>
      <?php foreach($products as $row) { ?>
      <tr>
        <td><?php echo $row->name; ?></td>
        <td><?php echo $row->price; ?></td>
        <td><img src="<?php echo $row->image_path(); ?>" alt="<?php echo $row->name; ?>" width="100" /></td>

      </tr>
      <?php } ?>


    </div>
</body>

我希望它能解决您的问题