php - fetch_assoc 返回最后插入的元素

标签 php mysql

由于某些原因,mysql 只返回表中最后插入的元素,任何人都可以提示我的代码有什么问题吗?我只是在练习 php 并试图找出使函数易于重用的最佳方法(我的意思是只是练习 oop)。我知道这是一个糟糕的方法,但它仅用于练习目的。

<!DOCTYPE html>
<html>
<head>
    <title>Test Title</title>
</head>
<body>
    <?php 
        class Database{
            public $db;

            public function __construct($host,$username,$password,$dbname){

                $this->db=new MySQLi($host,$username,$password,$dbname);

            }
            public function getData(){
                $query="SELECT * FROM artisan";
                $result=$this->db->query($query);
                if($result->num_rows>0){
                    while($row=$result->fetch_assoc()){
                        echo "ID: ".$row["id"]. "-Username: ".$row["username"]. ", "."Email: ".$row["email"]."<br>";
                    }
                }else{
                    echo "No results found!";
                }

            }
            public function getContent(){
                $query="SELECT * FROM content";
                $result=$this->db->query($query);
                $values=array();
                if($result->num_rows>0){
                    while($row=$result->fetch_assoc()){
                    $values=array(
                        "title"=>$row['title'],
                        "body"=>$row['body']
                    );
                }

            }
            return $values;
            }
        }
        $database=new Database('localhost','root','','test');
        $database->getData();
        $values=$database->getContent();

     ?>

     <style type="text/css">
        .container{
            text-align:center;
        }
     </style>
     <div class="container">
      <?php

        for($i=0;$i<count($values);$i++){
        echo $values["title"]."<br>";
        echo $values["body"]."<br>";
      }
       ?>
     </div>
</body>
</html>

最佳答案

您应该将每一行添加到 $values 而不是每次都替换它。

你在哪里:

$values=array(
      "title"=>$row['title'],
      "body"=>$row['body']
);

将其更改为:

$values[] = array(
      "title"=>$row['title'],
      "body"=>$row['body']
);

然后你有显示器的地方:

for($i=0;$i<count($values);$i++){
    echo $values["title"]."<br>";
    echo $values["body"]."<br>";
}

更改为:

foreach($values as $value){
    echo $value["title"]."<br>";
    echo $value["body"]."<br>";
}

或者使用 FOR:

for($i=0;$i<count($values);$i++){
    echo $values[$i]["title"]."<br>";
    echo $values[$i]["body"]."<br>";
}

关于php - fetch_assoc 返回最后插入的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47702654/

相关文章:

Mysql连接多张表

php - 为什么 CURL 在我设置了 3000 毫秒超时后会在 1000 毫秒内超时?

php - Facebook : OAuthException: (#200) Must have a valid access_token to access this endpoint

mysql - Codeigniter 中的全局 MySQL 查询

mysql - 在 Wordpress 网站上发布 Filemaker(数据库软件)数据

python - Flask-SQLAlchemy query.get() 在查询不存在的键时抛出异常

javascript - 使用 php 显示多个图像无法使用 jquery 旋转?

java - 如何在 Bitrix 中为第三方应用程序实现 OAuth?

从数组和变量过滤时PHP mysql查询问题

mysql - 每个不同名称的总数量