php pdo參數化查詢怎麼實現

藏色散人
發布: 2023-03-12 19:16:02
原創
2027 人瀏覽過

在PHP中可以透過prepare方法進行PDO參數化查詢,該方法會傳回一個PDOStatement對象,使用語法如「prepare('SELECT login_oid FROM logined WHERE user_id=...」。

php pdo參數化查詢怎麼實現

本文操作環境:Windows7系統、PHP7.1、Dell G3電腦。

php pdo參數化查詢怎麼實作?

PDO參數化查詢prepare() php防SQL注入

PDO中參數化查詢主要用到prepare()方法,然後這個方法會回傳一個PDOStatement對象,也就SQL宣告(不知道怎麼翻譯),此時SQL語句只是被編譯,但並未執行,呼叫PDOStatement中方法後會執行SQL語句,如下範例:

$sm = $db->prepare('SELECT login_oid FROM logined WHERE user_id=:user_id;'); $sm->bindValue(':user_id', $user_id, PDO::PARAM_INT); $sm -> execute();
登入後複製

在execute()執行前,就可以呼叫bindValue( )或bindParam()方法替換之前準備的SQL語句中的你指定參數了,在SQL語句中指定參數有兩種方式:':name'和'?',上面程式碼中的用的是前一種,後者的方式是:

$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?;'); $sm->bindValue(1, $calories, PDO::PARAM_INT); $sm->execute();
登入後複製

bindValue()有三個參數,第一個指定要替換掉SQL語句中哪一個參數,第二個指定替換後的值,第三個指定值的類型,型別對應如下:

PDO::PARAM_BOOL
登入後複製

布林型別

PDO::PARAM_NULL
登入後複製

NULL型別

PDO::PARAM_INT
登入後複製

整數型別

PDO::PARAM_STR
登入後複製

字串型別如CHAR, VARCHAR, string

PDO::PARAM_LOB
登入後複製

資源類別大對象,如檔案等

PDO::PARAM_STMT
登入後複製

不知道

PDO::PARAM_INPUT_OUTPUT
登入後複製

這個好像是擴充類型

裡面沒有提供實數類型,這個很詬異.

再說說execute()這個方法,它本身也可以做參數替換,但是它會把所有值的類型都變成字串類型,如下

$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?;'); $sm->execute(array($calories));
登入後複製

多參數替換如下

$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?, id < ?;'); $sm->execute(array($calories, $user_id));
登入後複製

推薦學習:《PHP影片教學

以上是php pdo參數化查詢怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!