[英]pdo prepared statement multiple execution?
我只是要在我的站點中實現PDO,但我想知道是否可以多次執行准備好的語句?
$SQL = $dbh->prepare("SELECT * FROM user WHERE id=? AND users=?");
$SQL -> execute(array($id,$userid));
while($check = $SQL -> fetchObject()){
然后我會為這個SQL使用一個while循環
我可以在while循環中使用相同的$ SQL進行其他執行嗎? 因此,我不必再次輸入准備好的語句嗎?
$SQL -> execute(array($id2,$userid2));
while($check2 = $SQL ->fetchObject(){
//while loops for second execution, but I'm not sure how it works cause
//its using the same $SQL?
}
}//this end bracket is for the first while loop
對的,這是可能的。 准備一次,根據需要執行多次。
當然,我不確定為什么要在循環中執行SELECT
……這通常沒有多大意義。
是的,您可以重用相同的准備好的語句,但不能重用該語句。 您嘗試執行的操作與執行此操作基本相同:
for ($i=0; $i<$some_number; $i++) {
echo $i."\n";
for ($i=0; $i<$some_number; $i++) {
// do something
}
}
第二個for
循環將移動與原始指針相同的指針,因此上述內容的輸出將只是“ 0
”,指示原始for
循環僅發生一次。
因此,為了解決這個問題,您將需要將第一次execute
的結果存儲到數組中,然后對其進行迭代。 這樣,您就不必擔心任何指針
$SQL = $dbh->prepare("SELECT * FROM user WHERE id=? AND users=?");
$SQL->execute(array($id,$userid));
$checks = $SQL->fetchAll();
foreach ($checks as $check) {
$SQL->execute(array($id2,$userid2));
while ($check2 = $SQL->fetchObject(){
//while loops for second execution
}
}
這樣,您使用的是完全相同的預處理語句(這很好),並且原始的$check
變量可在while
循環中使用。
但是,盡管如此,我很直覺,您可以將所有內容放入一個SQL查詢中,而無需像這樣循環進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.