php - 如何根据检索到的列类型为 bind_param 动态分配正确的类型?
问题描述
背景资料:
我正在创建一个将为我处理某些查询的类。其中一个查询是 SELECT 查询,用户可以在其中根据子句选择某些内容。我成功地检索了列的类型,但不知道如何根据列的类型实际决定应该给予哪个类型bind_param()
(第一个参数)。
如果检索到的列类型是某种类型,我最初的计划是廉价并简单地硬编码应该给出哪个参数。
我最初想法的例子:
if ($type === "varchar") {
$aVariable = "s";
}
//OR USE A SWITCH, BUT YOU GET THE IDEA
bind_param($aVariable, $someOtherVar);
然而,由于许多不同的原因,这不是我满意的事情。所以我的问题是:
问题:
如何使用 TYPES 列(如果可能)来确定给定的参数是否bind_param()
应该是以下类型之一:“s,i,d,b”,而不必硬编码检索到的类型 =某封信。
解决方案
您的代码不应该尝试猜测类型。您应该将所有内容绑定为字符串。99.99% 的时间不会有任何影响。在某些极端情况下,实际类型会有所不同,但在这些情况下,当您知道类型应该是什么时,您可以对类型进行硬编码。如果您猜测类型,那么您只会将更多错误添加到您的软件中。
您从 HTML 表单收到的所有数据都是字符串类型。MySQL 根据上下文动态地进行类型转换。为什么要费心在 PHP 中转换值?只需将所有内容按原样发送到 MySQL 并让它决定类型应该是什么。
推荐阅读
- android - 来自 Android 的 Firebase 动态短链接 Facebook 帖子
- html - 是什么导致元素的宽度与位置:固定不相对于视口
- r - R中的summary(n())和count()困难
- python - 什么时候使用 sys.stdin 比使用 input() 更快?
- r - 警告消息:在更改为数字时强制引入 NA
- location - Miui、Oppo、Vivo 等自定义 rom 的位置问题
- angular - Uncaught Error: Uncaught (in promise): TypeError: Super expression must be null or a function in Angular v6
- python - OpenCV根据像素值查找轮廓
- python - 安装pynacl后无法调用成员
- setuptools - 如何从包中的脚本访问包的模板部分