【问题标题】:mysqli bind param data typesmysqli 绑定参数数据类型
【发布时间】:2012-11-28 04:57:17
【问题描述】:

我目前正在用 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 字符串的方式?

谢谢再见

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

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

    就是这样,干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-01
      • 2010-12-03
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多