// mysqli 预处理$conn = new mysqli('127.0.0.1', 'root', '', 'blog_test');$username = 'one';$stmt = $conn->prepare("select username from zyblog_test_user where username = ?");$stmt->bind_param("s", $username);$stmt->execute();echo $stmt->bind_result($unames);var_dump($unames);while ($stmt->fetch()) { printf("%sn", $unames);}
可以看出,mysqli 除了方法名不同之外,绑定参数的键名也不完全的相同,这里我们使用的是问号占位,在 bind_param() 方法中,是使用 s 来表示符号位置,如果是多个参数,就要写成 sss... 这样 。
总结预处理语句的能力在现在的框架中都已经帮我们封装好了,其实我们并不需要太关心,就像 Laravel 中使用 DB::select() 进行数据库操作时,我们就可以看到预处理语句的应用 。大家可以自行查阅 vendor/laravel/framework/src/Illuminate/Database/Connection.php 中的 select() 方法 。
测试代码:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202008/source/PHP%E4%B8%AD%E6%93%8D%E4%BD%9C%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E9%A2%84%E5%A4%84%E7%90%86%E8%AF%AD%E5%8F%A5.php
参考文档:
https://www.php.net/manual/zh/pdo.prepared-statements.php
推荐阅读
- 什么是中台,为什么需要中台
- 你知道Linux中用户们的密码藏在哪儿吗?
- 这九大技术趋势,每一条都会重要
- 评说中国十大茶叶,2018最新茶叶十大品牌排名
- 湄江翠片的历史,仿佛就是杯中的叶茶
- 情人节是几月几号,中国茶道的真谛是什么
- 中国最好的小米产地是哪?
- 中世纪骑士制度探究?论中世纪西欧骑士制度
- 东北旅游必去景点有哪些
- 人类研究宇宙毫无意义 科学家也已经在宇宙中发现了很多其它信息