fetch_assoc 返回最后插入的元素 [英] fetch_assoc returns last inserted elements
本文介绍了fetch_assoc 返回最后插入的元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于某些原因,mysql 只返回表中最后插入的元素,有人可以提示我的代码有什么问题吗?我只是在练习 php 并试图找出使函数易于重用的最佳方法(我的意思是只是练习 oop).我知道这是一种不好的方式,但它仅用于练习目的.
<头><title>测试标题</title>头部><身体><?php类数据库{公共 $db;公共函数 __construct($host,$username,$password,$dbname){$this->db=new MySQLi($host,$username,$password,$dbname);}公共函数 getData(){$query="SELECT * FROM artisan";$result=$this->db->query($query);if($result->num_rows>0){while($row=$result->fetch_assoc()){echo "ID: ".$row["id"].-用户名:".$row[用户名"].", "."Email: ".$row["email"]."<br>";}}别的{echo "未找到结果!";}}公共函数 getContent(){$query="SELECT * FROM content";$result=$this->db->query($query);$values=array();if($result->num_rows>0){while($row=$result->fetch_assoc()){$值=数组("title"=>$row['title'],"body"=>$row['body']);}}返回 $values;}}$database=new Database('localhost','root','','test');$database->getData();$values=$database->getContent();?><style type="text/css">.容器{文字对齐:居中;}</风格><div class="容器"><?phpfor($i=0;$i";echo $values["body"]."
";}?>
</html>
解决方案
您应该将每一行添加到 $values
而不是每次都替换它.
你在哪里:
$values=array("title"=>$row['title'],"body"=>$row['body']);
改为:
$values[] = array("title"=>$row['title'],"body"=>$row['body']);
然后是你的显示器:
for($i=0;$i";echo $values["body"]."
";}
更改为:
foreach($values as $value){echo $value["title"]."
";echo $value["body"]."
";}
或者使用 FOR:
for($i=0;$i
For some reasons mysql returns only last inserted element in table,could anyone give a tip what's wrong with my code? i'm just practicing php and trying to figure out best ways to make functions easily reusable(just practicing oop i mean). i know this is a bad way but it's only for practice purposes.
<!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>
解决方案
You should add each row to $values
instead of replacing it each time.
Where you have:
$values=array(
"title"=>$row['title'],
"body"=>$row['body']
);
Change it to:
$values[] = array(
"title"=>$row['title'],
"body"=>$row['body']
);
And then where you have the display:
for($i=0;$i<count($values);$i++){
echo $values["title"]."<br>";
echo $values["body"]."<br>";
}
Change to:
foreach($values as $value){
echo $value["title"]."<br>";
echo $value["body"]."<br>";
}
Or using a FOR:
for($i=0;$i<count($values);$i++){
echo $values[$i]["title"]."<br>";
echo $values[$i]["body"]."<br>";
}
这篇关于fetch_assoc 返回最后插入的元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文