如何使用此函数从 mysql 和 PHP 获取多行

Posted

技术标签:

【中文标题】如何使用此函数从 mysql 和 PHP 获取多行【英文标题】:How to get multiple rows from mysql & PHP with this function 【发布时间】:2016-07-15 09:52:07 【问题描述】:

我有这个只返回一行的函数,我该如何修改该函数使其返回多行?

public function getVisitors($UserID)
   
$returnValue = array();
$sql = "select * from udtVisitors WHERE UserID = '".$UserID. "'";

$result = $this->conn->query($sql);
if ($result != null && (mysqli_num_rows($result) >= 1)) 
$row = $result->fetch_array(MYSQLI_ASSOC);
if (!empty($row)) 
$returnValue = $row;


return $returnValue;

【问题讨论】:

固定数量的行还是所有选定的行? 所有选定的行,我尝试使用@HankyPanky 之前发送给我的行,但它检索到数组中的 1 行 【参考方案1】:

mysqli 中有一个函数,叫做 fetch_all(),所以,从字面上回答你的问题,它会是

public function getVisitors($UserID)
   
    $sql = "select * from udtVisitors WHERE UserID = ".intval($UserID);
    return $this->conn->query($sql)->fetch_all();

但是,这是不对的,因为您没有使用准备好的语句。所以正确的功能应该是

public function getVisitors($UserID)
   
    $sql = "select * from udtVisitors WHERE UserID = ?";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param("s", $UserID);
    $stmt->execute();
    $res = $stmt->get_result();
    return $res->fetch_all();

【讨论】:

【参考方案2】:

我建议将它们存储在关联数组中:

$returnValue = array();

while($row = mysqli_fetch_array($result))

    $returnValue[] = array('column1' => $row['column1'], 'column2' => $row['column2']); /* JUST REPLACE NECESSARY COLUMN NAME AND PREFERRED NAME FOR ITS ASSOCIATION WITH THE VALUE */

 /* END OF LOOP */

return $returnValue;

当你调用返回值时,你可以这样做:

echo $returnValue[0]['column1']; /* CALL THE column1 ON THE FIRST SET OF ARRAY */
echo $returnValue[3]['column2']; /* CALL THE column2 ON THE FOURTH SET OF ARRAY */

您仍然可以使用循环调用所有值。

$counter = count($returnValue);

for($x = 0; $x < $counter; $x++)
    echo '<br>'.$rowy[$x]['column1'].' - '.$rowy[$x]['column2'];

【讨论】:

这是我见过的已经存在的关联数组创建关联数组最没用的方法。

以上是关于如何使用此函数从 mysql 和 PHP 获取多行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 php 从多行表单更新 mysql 数据库 [关闭]

如何使用 PHP 使用复选框从 mysql 数据库中删除多行?

如果发生多行,如何在 php mysql 的侧存储过程中执行选择查询?

如何从数据库中截断多行文本? (html/css/php)

使用 PHP 在一个 MySQL 查询中获取多行的最佳方法是啥? [复制]

使用类从MySQL获取多行[关闭]