0

我有几个关于使用 PHP 和 MySQL 进行安全数据存储的问题。

首先,我在查询或将任何数据保存到数据库之前使用 PDO 和准备好的语句,特别是 Digg 创建的包装器。

它建议在将所有数据发送到准备好的语句之前对所有数据进行类型转换。

  1. 这是必要的吗?如果是这样...

  2. 有没有一种方法可以检索特定表的列信息,构建一个“过滤器”,根据表的字段信息自动对数据进行类型转换,然后再将其发送到字段?

例如,假设我有一个名为 player 的表,其中包含以下列:

  1. id - int(11)
  2. 句柄 - varchar(100)
  3. 国家 - 字符(2)
  4. team_id - int(11)

在 PHP 中,在我保存或更新播放器之前,假设在保存之前对数据进行类型转换是一种很好的做法,那么是否有一个函数可以自动将 MySQL 数据类型映射到 PHP 数据类型?

这样我就可以做类似 settype($my_var, $data_type_from_matching_table_field) 的事情。

还是我应该只创建一个带有一堆开关盒的类?

4

1 回答 1

0
  1. 在大多数情况下,没有必要。在一些边缘情况下,我发现它是必要的:在 MySQL 日期/日期时间/时间戳和 PHP 日期时间之间进行转换,在 MySQL 集和 PHP 数组之间进行转换,以及将带有 __toString 的对象转换为实际字符串以使 MySQL 受益。但是,只有在您选择在 PHP 端使用那些稍微不寻常的数据类型时,所有这些都是必需的。

  2. 这是可能的,但我知道的唯一方法是解析“SHOW COLUMNS”或“SHOW FIELDS”查询的输出,并在长 switch 语句中使用该数据,正如您所提到的。我建议这样做只是为了处理您最喜欢的数据类型与 MySQL 不一致的少数特殊情况,而不是担心 PHP 的内置类型转换可以正确处理的许多情况。

于 2013-07-23T22:13:22.610 回答