PHP SQL Foreach Statement


PHP SQL Foreach Statement

我知道PHP已经有一段时间了,但不知道foreach()命令是如何工作的。我知道它类似于 while()。我已经环顾了一下它是如何工作的,但不太确定如何将 mySQL 语句连接到它。

例如,假设您有一个 SQL 语句,如下所示:

"SELECT username,password,email,dob FROM users"

您将如何将其实现到 foreach() 语句中以回显每个用户的用户名、密码、电子邮件和出生日期?

提前感谢所有帮助!

foreach 方法循环遍历数组(或对象)的所有行,从第一行到最后一行。这与while循环的不同之处在于,while会继续循环,直到满足某个条件。这可以是在 2 次迭代或 1000 次迭代之后,具体取决于您设置的条件。

foreach 循环中,您知道数组中的键将有尽可能多的迭代次数(除非您在其中使用 break 语句,这会立即中止它)。

SQL 结果也可以作为数组或对象返回,可以循环返回。例如:

$query = "SELECT username,password,email,dob FROM users";
$resultSet = mysqli_fetch_all($query, MYSQLI_BOTH);
foreach ($resultSet as $id => $row) {
    echo $row['username'] // Show username
}

你可以看看 php 手册:
http://de2.php.net/manual/en/mysqli-result.fetch-row.php

第一个示例应该是一个很好的起点

foreach 是一种遍历数组的机制。 如果您用于运行 sql 查询的内容返回一个数据数组(几乎可以肯定是),则可以使用 foreach 循环来运行所有结果。

$my_array = array('cats' => 'meow', 'dogs' => 'bark');
foreach($my_array as $value) { echo "{$vlaue} <br />"; }
echo "<br />";
foreach($my_array as $key => $value) { echo "{$key} make a {$value} sound<br />"; }

输出:喵 <</em>/>树皮
猫发出喵喵声
狗发出吠叫声

对于您的 sql 查询

$mysqli = new mysqli("example.com", "user", "password", "database");
$users = mysqli_fetch_array( $mysqli->query("SELECT username,password,email,dob FROM users") , MYSQLI_BOTH);
foreach($users as $user) {
   echo "User: {$user['username']} <br /> 
         Password: {$user['password]} <br /> 
         email: {$user['email']} <br />
         DOB: {$user['dob']} <br /><br />";
}

永远不要使用 mysqli,我只是为了简单起见在这里使用它。

Foreach 循环遍历数组。您需要将该查询的结果放入一个数组中,这将需要使用 while 循环来循环它并将行保存到数组中或使用类似 *mysqli_fetch_all* 的东西

使用 MySQL 结果的标准方法是while循环。请看这里的示例 2:

function readDataForwards($dbh) {
  $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY BET';
  try {
    $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
    $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
      $data = $row[0] . "'t" . $row[1] . "'t" . $row[2] . "'n";
      print $data;
    }
    $stmt = null;
  }
  catch (PDOException $e) {
    print $e->getMessage();
  }
}

http://php.net/manual/en/pdostatement.fetch.php

您可以使用foreach循环浏览结果,首先获取所有数据:

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Fetch all of the remaining rows in the result set */
print("Fetch all of the remaining rows in the result set:'n");
$result = $sth->fetchAll();
foreach($result as $key => $value)
{
    var_dump($value);
}

http://php.net/manual/en/pdostatement.fetchall.php

这里的问题是你需要一些东西来迭代以用于每个 - 看起来你习惯于获取单个数组/对象。如果您使用的是数据库抽象层,而不是原始 mysql_* 命令,则这些工具中的大多数都会返回数组或对象数组。

你可以在这里看到一个你问的例子,但请注意,这是使用CodeIgniter的数据库层来获取数据:http://ellislab.com/codeigniter/user-guide/database/results.html