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

如何从mysql获取多行&;PHP使用此函数,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个只返回一行的函数,如何修改该函数使其返回多行 public function getVisitors($UserID) { $returnValue = array(); $sql = "select * from udtVisitors WHERE UserID = '".$UserID. "'"; $result = $this->conn->query($sql); if ($result != null && (mysqli_num_rows(

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

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;
}

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

$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'];
}
$counter=count($returnValue);
对于($x=0;$x<$counter;$x++){
回显“
”。$rowy[$x]['column1'].-'。$rowy[$x]['column2']; }
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();
}

固定行数还是所有选定行?所有选定行,我尝试使用之前发送给我的@HankyPanky,但它在数组中检索1行,这是我见过的从现有关联数组中创建关联数组的最无用的方法。