【发布时间】: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 字符串的方式?
谢谢再见
【问题讨论】: