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();//這問題有兩種解法:
別偷懶,乖乖的用 PDO::prepare 與 PDOStatement->execute。
若要用變數接收 PDO::query 回傳的 PDOStatement,請先 unset(),例: unset($st); 。