簡體   English   中英

pdo准備的語句多次執行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM