pdo 参数化查询 mysql函数_PDO笔记之参数化查询
參數化查詢解釋在這里:Wiki參數化查詢?(少有的Wiki中文比英文介紹的要詳細的編程條目)
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));
總結
以上是生活随笔為你收集整理的pdo 参数化查询 mysql函数_PDO笔记之参数化查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一建多少钱一年啊?
- 下一篇: aix 卸载mysql_AIX 删除数据