pdo 参数化查询 mysql函数_PDO笔记之参数化查询
參數(shù)化查詢解釋在這里:Wiki參數(shù)化查詢?(少有的Wiki中文比英文介紹的要詳細的編程條目)
PDO中參數(shù)化查詢主要用到prepare()方法,然后這個方法會返回一個PDOStatement對象,也就SQL聲明(不知道怎么翻譯),此時SQL語句只是被編譯,但并未執(zhí)行,調(diào)用PDOStatement中方法后會執(zhí)行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()執(zhí)行前,就可以調(diào)用bindValue()或者bindParam()方法替換之前準備的SQL語句中的你指定參數(shù)了,在SQL語句中指定參數(shù)有兩種方式:':name'和'?',上面代碼中的用的是前一種,后一種的方式是:
$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?;');
$sm->bindValue(1, $calories, PDO::PARAM_INT);
$sm->execute();
bindValue()有三個參數(shù),第一個指定要替換掉SQL語句中哪一個參數(shù),第二個指定替換后的值,第三個指定值的類型,類型對應(yīng)如下:
PDO::PARAM_BOOL
布爾類型
PDO::PARAM_NULL
NULL類型
PDO::PARAM_INT
整數(shù)類型
PDO::PARAM_STR
字符串類型如 CHAR, VARCHAR, string
PDO::PARAM_LOB
資源類大對象,如文件等
PDO::PARAM_STMT
不知道
PDO::PARAM_INPUT_OUTPUT
這個好像是擴展類型
里面沒有提供實數(shù)類型,這個很詫異
再說說execute()這個方法,它本身也可以做參數(shù)替換,但是它會把所有值的類型都變成字符串類型,如下
$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?;');
$sm->execute(array($calories));
多參數(shù)替換如下
$sm = $db->prepare('SELECT * FROM fruit WHERE calories < ?, id < ?;');
$sm->execute(array($calories, $user_id));
總結(jié)
以上是生活随笔為你收集整理的pdo 参数化查询 mysql函数_PDO笔记之参数化查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一建多少钱一年啊?
- 下一篇: 南昌治疗无精症最好的医院推荐