PHP中操作数据库的预处理语句( 二 )


// 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




推荐阅读