1

我目前正在研究一小组 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 字符串的方式?

谢谢再见

4

1 回答 1

3

因为还没有人给出答案……我现在有一个!bind_param 中的数据类型定义不仅仅将这些引号添加到查询中,尽管变量的绑定级别比 php 脚本所能做到的要低!正式通过除 mysqli/pdo 之外的任何不同路径意味着通过字符串传输所有数据!

就是这样,干杯!

于 2012-11-27T20:57:17.567 回答