pdo中的預處理語法

什麼叫預處理語法 就是,爲了「重複執行」多條結構相似的sql語句,而將該sql語句的形式「進行預先處理」(編譯); 該sql語句的「形式」中,含有「未給定的數據項」。 而後,到正式執行的時候,只要給定相應的形式上的「數據項」,就能夠更快速方便執行。 好比(有兩種預約義語法): 語法1: $sql = 「select * from tab where id = ? 「; //這裏這個「?」就是未給定的數據項;這裏一般叫作「佔位符」 //也能夠是多個問好。 語法2: $sql = 「select * from tab where id = :v1 and name = :v2 「; //這裏這個「:v1」和 「:v2」 就是未給定的數據項;一般這裏叫作「命名參數」; 怎麼使用? 分3步: 1,對含預處理語法的sql語句進行「預處理」: $stmt = $pdo->prepare($sql ); // 2, 對上述預處理的結果對象($stmt)的未賦值數據,進行賦值: $stmt->bindValue( 數據項1, 值1); $stmt->bindValue( 數據項2, 值2); 。。。。。。 3, 執行執行: $stmt->execute(); 這樣以後,該sql語句就算正式完成! <?php header('content-type:text/html; charset=utf-8'); //實例化pdo對象 $pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=test;', 'root', '888888'); //經過query函數執行sql命令 $pdo->query('set names utf8'); //插入數據 $sql = "insert into persons (name,age) values (?, ?);"; $preObj = $pdo->prepare($sql); $res = $preObj->execute(array('小明', 22)); var_dump($res); //刪除數據 $sql = "delete from persons where id = ?"; $preObj = $pdo->prepare($sql); $res = $preObj->execute(array(3)); var_dump($res); //修改數據 $sql = "update persons set name = ? where id = ?;"; $preObj = $pdo->prepare($sql); $res = $preObj->execute(array('lucy', 5)); var_dump($res); //查詢數據 $sql = "select * from persons where age > ? order by id desc;"; $preObj = $pdo->prepare($sql); $preObj->execute(array(20)); $arr = $preObj->fetchAll(PDO::FETCH_ASSOC); /* * FETCH_BOTH 是默認的,可省,返回關聯和索引。 * FETCH_ASSOC 參數決定返回的只有關聯數組。 * PDO::FETCH_NUM 返回索引數組 * PDO::FETCH_OBJ 返回由對象組成的二維數組 */ print_r($arr);
相關文章
相關標籤/搜索