bind_result
使得它如此,當你遍歷查詢的結果,從結果集的列會自動映射到局部變量。
例如,假設您執行返回結果有三列設置這樣的查詢:
$query = "SELECT Name, CountryCode, District FROM myCity";
要執行的查詢和做的結果的東西,比方說打印出來:
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_row()) {
printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
}
}
上述代碼的「問題」是$row[0]
不是很具描述性。另一種方法是使用bind_result
,這是這樣的:
$query = "SELECT Name, CountryCode, District FROM myCity";
if ($stmt = $mysqli->prepare($query)) {
$stmt->bind_result($name, $countryCode, $district);
while ($stmt->fetch()) {
printf("%s (%s,%s)\n", $name, $countryCode, $district);
}
}
正如你看到的,每次使用bind_result
當你調用fetch
變量$name
,$countryCode
,$district
與值自動填充從目前的結果行。有一些你必須確保的細節,請閱讀the documentation瞭解更多信息。
要回答您的其他問題:您並不需要,而且確實您不會在每次查詢後關閉連接(除非您非常清楚自己在做什麼)。
來源
2011-03-04 23:36:52
Jon
感謝您的詳細和明確的解釋。 – Jay 2011-03-04 23:48:20
@adam:很高興幫助! – Jon 2011-03-05 00:06:58