【问题标题】:Retrieve Multiple Rows from mysql [duplicate]从mysql中检索多行[重复]
【发布时间】:2015-12-16 09:49:26
【问题描述】:

我正在开发一个使用此 php 脚本从 MySql 数据库中检索数据的 android 应用程序项目:

<?php
$con=mysqli_connect("localhost","root","","webservice");

$item_name = "Navnita";


$statement = mysqli_prepare($con, "SELECT * FROM reviews WHERE item_name = ?");
mysqli_stmt_bind_param($statement, "s", $item_name);
mysqli_stmt_execute($statement);

mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $item_name, $username, $review);

$revs = array();

while(mysqli_stmt_fetch($statement)){
    $revs["item_name"] = $item_name;
    $revs["username"] = $username;
    $revs["review"] = $review;              
}

echo json_encode($revs);
mysqli_close($con);

?> 我想检索所有具有 item_name = "Navnita" 的行,但它只检索一行:

{"item_name":"Navnita","username":"Jenny","review":"Food is just great!"}

数据库包含 3 行 item_name = "Navnita"。请帮帮我!我也不擅长 php 和数据库:|

【问题讨论】:

  • $revs["item_name"][] = $item_name;所有数据添加[]

标签: php mysql mysqli


【解决方案1】:

为此,您需要两个数组。最合乎逻辑的是将每一行存储在一个数组中,然后将该数组存储到另一个数组中,例如:

$revs = array();
$allrevs = array();

while(mysqli_stmt_fetch($statement)){
    $revs["item_name"] = $item_name;
    $revs["username"] = $username;
    $revs["review"] = $review;       
    $allrevs[] = $revs;       
}

echo json_encode($allrevs);

【讨论】:

  • 谢谢@Bas van Stein,这就是我想要的。
【解决方案2】:

您正在为同一个变量赋值,因为它们没有附加它们正在覆盖它们。 如下操作

$revs = array();

while(mysqli_stmt_fetch($statement)){
   array_push( $revs,array("item_name"=>$item_name,"username"=>$username,"review"=>$review));   

}

它会给你想要的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-06
    • 2014-06-02
    • 2016-05-29
    • 2013-10-25
    • 2015-12-12
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    相关资源
    最近更新 更多