[PHP] 使用 PDO 要注意的事

以前,我喜歡用 ADOdb 來連接資料庫;自從 PDO 被放進 PHP 5.1 後,它便成了我的新寵…

我在 PHP 5.1.6 環境上幫人家抓蟲時,看到以下兩段程式。

  1. $pdo = New PDO(......);
    
    $sql = "SELECT .....";
    $st = $pdo->prepare($sql);
    $st->execute();
    $rows = $st->fetchAll();
  2. $pdo = New PDO(......);
    
    $sql = "SELECT .....";
    $st = $pdo->query($sql);
    $rows = $st->fetchAll();

雖然以上兩段程式都可以取出 $rows ,但重複並交叉執行的話,就會出現問題。

  • 這段程式可以正確取出 $rows1 與 $rows2:
    $pdo = New PDO(......);
    
    $sql = "SELECT .....";
    $st = $pdo->query($sql);
    $rows1 = $st->fetchAll();
    
    $sql = "SELECT .....";
    $st = $pdo->prepare($sql);
    $st->execute();
    $rows2 = $st->fetchAll();
  • 這段程式只能正確取出 $rows1 ,$rows2 會是個空的陣列:
    $pdo = New PDO(......);
    
    $sql = "SELECT .....";
    $st = $pdo->prepare($sql);
    $st->execute();
    $rows1 = $st->fetchAll();
    
    $sql = "SELECT .....";
    $st = $pdo->query($sql);
    $rows2 = $st->fetchAll();

這問題有兩種解法: