我已經知道PHP一段時間了,但不知道foreach()命令是如何工作的。我知道它和while()類似。我已經查看了它是如何工作的,但我不太確定如何將mySQL語句連接到它。PHP SQL Foreach Statement
比方說你有一個SQL語句如下:
"SELECT username,password,email,dob FROM users"
你將如何落實到一個foreach()語句此呼應的每個用戶的用戶名,密碼,電子郵件地址和出生日期?
感謝您提前提供所有幫助!
我已經知道PHP一段時間了,但不知道foreach()命令是如何工作的。我知道它和while()類似。我已經查看了它是如何工作的,但我不太確定如何將mySQL語句連接到它。PHP SQL Foreach Statement
比方說你有一個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
}
Foreach遍歷數組。你需要把這個查詢的結果放到一個數組中,這需要在while循環中循環,並將行保存到一個數組中或者使用類似於* mysqli_fetch_all *
你可以看看php手冊:
http://de2.php.net/manual/en/mysqli-result.fetch-row.php
第一個例子應該是一個好的起點
使用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);
}
這裏的問題是,你將需要一些迭代來使用foreach - 而且看起來你習慣於獲得單個數組/對象。如果您使用了數據庫抽象層而不是原始的mysql_ *命令,那麼大多數這些工具將會返回一個數組或對象的數組。
你可以看到的是問什麼你在這裏的例子,但要注意這是使用CodeIgniter的數據庫層,以獲得數據:http://ellislab.com/codeigniter/user-guide/database/results.html
的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 />"; }
輸出:
喵
樹皮
貓做喵喵聲
狗做出樹皮聲音
您的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,雖然我只是爲了簡單起見而使用它。
檢查示例#3在這裏:http://php.net/manual/en/mysqli-result.fetch-assoc.php –