<?php $dbConn = new PDO( "mysql:host=localhost;dbname=adtuu",'root','root', array( // 強制 PDO 獲取的表字段字符的大小寫轉換,或原樣使用列信息 PDO::ATTR_CASE => PDO::CASE_LOWER, // 執行出錯時拋出異常 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // 將返回的空字符串轉換爲 SQL 的 NULL PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, // 返回數據的時候不將數值轉換爲字符串 PDO::ATTR_STRINGIFY_FETCHES => false, // 設置爲false禁止PDO模擬預處理語句,而使用真正的預處理語句,即有MySQL執行預處理語句 PDO::ATTR_EMULATE_PREPARES => false, )); $sql = 'SELECT adtuu_uuid, adtuu_name FROM blog_adtuu WHERE adtuu_uuid = ? AND adtuu_name = ?'; $q = $dbConn->prepare($sql); $id = 1; $name = 'adtuu'; //$q->bindParam(1, $id); //$q->bindParam(2, $name); $i = 1; foreach (array(1, 'adtuu') as &$bind) { $q->bindParam($i, $bind); $i++; } $result = $q->execute() ? $q->fetch(PDO::FETCH_ASSOC) : array(); $q->closeCursor(); var_dump($result); //假設數據庫中存在有id爲1,name爲adtuu的數據 //你們以爲上面的查詢可以查出數據來嗎??? //答案固然是否認的,爲何呢? //原來是bindParam中第二個參數要是引用值才行 //須要修改爲下面的 $i = 1; foreach (array(1, 'adtuu') as &$bind) { $q->bindParam($i, $bind); $i++; } //注意&$bind //固然還有更簡單的方法,就是拋開循環直接將參數傳入execute中 $result = $q->execute(array(1, "adtuu's")) ? $q->fetch(PDO::FETCH_ASSOC) : array();