溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php中的prepare怎么用

發(fā)布時間:2022-01-24 10:31:44 來源:億速云 閱讀:153 作者:柒染 欄目:編程語言

這篇文章給大家介紹php中的prepare怎么用,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

在php中“PDO::prepare”表示準備要執(zhí)行的語句,并返回語句對象,其使用語法如“public PDO::prepare(string $statement, array $driver_options = array())”。

本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1版、DELL G3電腦

php prepare的用法是什么?

PDO::prepare

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PHP 8,PECL pdo >= 0.1.0)

PDO::prepare — 準備要執(zhí)行的語句,并返回語句對象

說明

public PDO::prepare(string $statement, array $driver_options = array()): PDOStatement

為 PDOStatement::execute() 方法準備待執(zhí)行的 SQL 語句。 語句模板可以包含零個或多個參數(shù)占位標記,格式是命名(:name)或問號(?)的形式,當它執(zhí)行時將用真實數(shù)據(jù)取代。 在同一個語句模板里,命名形式和問號形式不能同時使用;只能選擇其中一種參數(shù)形式。 請用參數(shù)形式綁定用戶輸入的數(shù)據(jù),不要直接字符串拼接到查詢里。

調(diào)用 PDOStatement::execute() 時,每一個值的參數(shù)占位標記,名稱必須唯一。 除非啟用模擬(emulation)模式,同一個語句里無法使用重名的參數(shù)。

注意:

參數(shù)占位符僅能字面上展示完整的數(shù)據(jù)。不能是字面的一部分,不能是關(guān)鍵詞,不能是標識符,不能是其他任意的范圍。 舉例說明:不能把多個值綁到單個參數(shù)里,然后在 SQL 語句里用 IN() 查詢。

如果用不同參數(shù),通過 PDO::prepare() 和 PDOStatement::execute() 多次調(diào)用同一個 SQL 語句,將提升應(yīng)用的性能 —— 驅(qū)動可以讓客戶端/服務(wù)器緩存查詢和元信息。 同時,調(diào)用 PDO::prepare() 和 PDOStatement::execute() 還能阻止 SQL 注入攻擊,不需要給參數(shù)手動加引號與轉(zhuǎn)義。

如果內(nèi)置驅(qū)動不支持參數(shù),PDO 將模擬出參數(shù)的功能;如果驅(qū)動僅僅支持其中一種風(fēng)格(命名參數(shù)和問號參數(shù)兩種),也會自動重寫到另外一種風(fēng)格。

注意: The parser used for emulated prepared statements and for rewriting named or question mark style parameters supports the non standard backslash escapes for single- and double quotes. That means that terminating quotes immediately preceeded by a backslash are not recognized as such, which may result in wrong detection of parameters causing the prepared statement to fail when it is executed. A work-around is to not use emulated prepares for such SQL queries, and to avoid rewriting of parameters by using a parameter style which is natively supported by the driver.

參數(shù)

statement

必須是對目標數(shù)據(jù)庫服務(wù)器有效的 SQL 語句模板。

driver_options

數(shù)組包含一個或多個 key=>value 鍵值對,為返回的 PDOStatement 對象設(shè)置屬性。 常見用法是:設(shè)置 PDO::ATTR_CURSOR 為 PDO::CURSOR_SCROLL,將得到可滾動的光標。 某些驅(qū)動有驅(qū)動級的選項,在 prepare 時就設(shè)置。

返回值

如果數(shù)據(jù)庫服務(wù)器完成準備了語句, PDO::prepare() 返回 PDOStatement 對象。 如果數(shù)據(jù)庫服務(wù)器無法準備語句, PDO::prepare() 返回 false 或拋出 PDOException (取決于 錯誤處理器)。

注意:

模擬模式下的 prepare 語句不會和數(shù)據(jù)庫服務(wù)器交互,所以 PDO::prepare() 不會檢查語句。

范例

示例 #1 命名參數(shù)形式的 SQL 語句模板

<?php
/* 傳入數(shù)組的值,并執(zhí)行準備好的語句 */
$sql = 'SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();
$sth->execute(array(':calories' => 175, ':colour' => 'yellow'));
$yellow = $sth->fetchAll();
?>

示例 #2 問號形式的 SQL 語句模板

<?php
/* 傳入數(shù)組的值,并執(zhí)行準備好的語句 */
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
$red = $sth->fetchAll();
$sth->execute(array(175, 'yellow'));
$yellow = $sth->fetchAll();
?>

PHP開發(fā)環(huán)境搭建工具有哪些

一、phpStudy,是一個新手入門最常用的開發(fā)環(huán)境。二、WampServer,WampServer也同樣的也是和phpStudy一樣操作簡單對小白比較友好。三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一個功能強大的建站集成軟件包;四、MAMP,MAMP分為兩種MAMP和MAMP Pro for Mac。五、寶塔面板,寶塔面板是一款服務(wù)器管理軟件,支持windows和linux系統(tǒng)。六、UPUPW,UPUPW是目前Windows平臺下最具特色的Web服務(wù)器PHP套件。

關(guān)于php中的prepare怎么用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI