Php 如何在同一查询中两次列出数据库行?

Php 如何在同一查询中两次列出数据库行?,php,mysql,database,Php,Mysql,Database,基本上,您有两个选项可以使用PHP回显HTML页面中的行: 使用PDO: $stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); $stmt->execute(array(':name' => $name)); foreach ($stmt as $row) { // do something with $row } 使用mysqli: $stmt = $dbConnection-&

基本上,您有两个选项可以使用PHP回显HTML页面中的行:

使用PDO:

$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');

$stmt->execute(array(':name' => $name));

foreach ($stmt as $row) {
    // do something with $row
}
使用mysqli:

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name);

$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // do something with $row
}
因此,当您将第一行的数据赋给$row时,指针将移动到查询的下一行。如果在页面的其他部分需要相同的数据列表,正确的做法是什么

  • 将指针返回到第一行(如何操作?
  • 重新调用查询(并花费更多的时间和资源)
  • 用数据创建一个数组(如何做?
    我总是为此使用数组。。如果没有其他内容,您至少可以保持代码的高可读性。

    只需创建
    全局数组
    您是否有关于如何将$row对象传递给数组变量的代码示例以显示我,请?:-)@EASI您可以在while循环之前创建一个全局数组
    global$myarray=array()
    然后在循环中,您只需按所需的方式将数据传递到数组。这一切都取决于您,我通常使用2D数组并像这样传递值:
    $myarray[row['ID']]=array(row['firstname',row['lastname'])。然后您可以使用ID轻松访问这些数据。。。。例如,数据库中ID为15的个人的名字将位于
    $myarray[15][0]中