mysql - 在 drupal 中使用枚举

标签 mysql drupal

我有一个 mysql 表 id,name,gender,age religion( enum('HIN','CHR','MUS') ,category(enum('IND','AMR','SPA') 最后一个2 是枚举数据类型,我在 drupal 中的代码是

  $sql="SELECT * FROM {emp} WHERE age=".$age." and religion=".$rel." and category=".$categ;

  $result=db_query_range($sql,0,10);

   while($data=db_fetch_object($result))
    {
      print $data->id." ".$data->name."<br>";
    }

我没有得到任何结果或错误。我正在尝试对每个字段进行不同的查询,除了使用枚举外,一切都很好。

 for ex: $sql='SELECT * FROM {emp} WHERE religion="'.$rel.'"';

在drupal中使用枚举数据类型有没有问题

最佳答案

枚举不是我认为 drupal 可以使用模式 API 制作的东西,而这正是您在大多数情况下想要用于模块和其他东西的东西。此外,您在引用它时缺少结尾 ),但我相信您在制作表格时做对了。

枚举只是在插入值时内置到数据库中的约束。因此,如果您尝试插入一个无效值,您将插入一个空字符串。所以它不会对 Drupal 查询获取数据有任何影响。除了将无效值转换为空字符串外,它在 Drupal 插入值时也不会产生任何影响。您可能想检查您的数据,看看它是否符合预期。您可能得不到任何结果,因为您的查询不匹配任何内容。

另一件事是您构建查询的方式是大不不,因为它非常不安全。你应该做的是:

db_query("SELECT ... '%s' ...", $var);

Drupal 将用您的 var 替换 %s 并确保没有 SQL 注入(inject)和其他讨厌的东西。 %s 表示 var 是一个字符串,使用 %d 表示整数,还有一些我现在不记得了。您可以有多个这样的占位符,它们将按顺序插入,就像 t 函数一样。

关于mysql - 在 drupal 中使用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1806984/

相关文章:

php - SQLSTATE[23000] : Integrity constraint violation: 1048 Column 'profile_percentage' cannot be null on doctrine

drupal - 如何配对 DDEV 数据库以从 Drupal 7 迁移到 Drupal 8

php - 如何在 Drupal 8 中创建查询

mysql - 从 MySQL 数据库插入数据透视表时运行宏

mysql - 建立数据库连接时出错

python - MySQL 数据库 : lua or python

php - Drupal6 - 使用 MENU_CALLBACK 输出 CSV

mysql - mysql 列数据类型对保持效率很重要吗?

来自非原子序列化数据单元的 MySql 单元子值

javascript - 通过幻灯片更改事件使用 jquery 停止音频