我有一个mysql表id,名称,性别,年龄宗教(enum('HIN','CHR','MUS'),类别(enum('IND','AMR','SPA'),其中最后2个是enum数据类型和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>";
}
Run Code Online (Sandbox Code Playgroud)
我没有得到任何结果或错误.我正在尝试使用每个字段进行不同的查询,除了使用枚举外,一切都很好.
for ex: $sql='SELECT * FROM {emp} WHERE religion="'.$rel.'"';
Run Code Online (Sandbox Code Playgroud)
在drupal中使用enum数据类型是否有任何问题
枚举不是我认为drupal可以用模式API做的事情,这在大多数情况下你想用于模块和东西.在你提到它的时候,你也缺少一个结局),但我确信你在制作桌子时做得对.
枚举只是插入值时内置于数据库中的约束.因此,如果您尝试插入无效值,则会插入空字符串.因此它不会对Drupal查询获取数据产生任何影响.当Drupal插入值时,除了将无效值转换为空字符串之外,它也不会有任何效果.您可能想要检查您的数据,看看它是否符合预期.您可能只是没有结果,因为您的查询与任何内容都不匹配.
另一件事是你构建查询的方式是一个很大的NO NO,因为它非常不安全.你应该做的是:
db_query("SELECT ... '%s' ...", $var);
Run Code Online (Sandbox Code Playgroud)
Drupal将用你的var替换%s,并确保没有SQL注入和其他讨厌的东西.%s表示var是一个字符串,使用%d表示整数,还有一些我刚才不记得的.你可以有几个像这样的占位符,它们将按顺序插入,就像t函数一样.
| 归档时间: |
|
| 查看次数: |
1642 次 |
| 最近记录: |