我目前正在研究一小组 php 中的数据库访问和管理类。在试图更好地理解我们众所周知的 mysqli 时,我仍然无法理解为什么以及如何在 mysqli_stmt::bind_param 中定义的变量类型能够并且会增强当前应用程序中的安全性/实用性。
使用 mysql 语句的优点是显而易见的。查询和值在两个不同的路径上提交,这当然使应用程序更安全,更防错!但是这些变量会发生什么……这些是在 php 之前检查还是在 mysql 之后检查?
只是mysqli因为做类似的事情而懒惰吗?
!is_numeric($v) && ( !is_null($v) || $v != “NULL”) ? “‘$v’” : $v
或者我不知道 mysql 端是否有任何 var 类型定义?
“PREPARE stmt_name FROM … “;
“SET @var1 = 3”;
“SET @var2 = ‘foo’”;
“EXECUTE stmt_name USING @var1, @var2”;
这个值似乎没有太多变化。几乎所有作为字符串传递的东西都被正确评估了……那为什么还要麻烦呢?
即使与这个问题相关,还有另一个问题:有什么方法可以复制 mysqli 在数据包中发送 blob 字符串的方式?
谢谢再见