我创建了一个连接并修改默认 Drupal 注册表单的模块。处理时,表单从外部网页获取信息(通过 DOM 解析)并检查正在检索的数据是否已经存在于现有用户的配置文件字段中以防止重复。解析脚本本身正在检索所需的信息(因为此信息存在于错误消息中。)对于我的一生,我只是无法获得查询来扫描我的数据库中的适当配置文件字段并检索任何数据。
这是我写的函数:
function CustomVerify_CheckName($name, $server){
$result = db_select('field_data_field_character_first_name','u')
->fields('u',array('field_character_first_name'))
->condition('field_character_first_name', $name)
->condition('field_character_server', $server)
->range(0,1)
->execute()
if($result->rowCount > 0):
return TRUE;
endif;}
我尝试了几种变体;将“field_data_field_character_first_name”替换为“users”,将字段交换为“data”字段(因为我相信这是在用户的配置文件表条目中记录适当分组的地方?)没有运气。
错误信息是这样的:
PDOException:SQLSTATE [42S22]:找不到列:1054 '字段列表'中的未知列'u.field_character_first_name':从{field_data_field_character_first_name}选择u.field_character_first_name AS field_character_first_name u WHERE(field_character_first_name =:db_condition_placeholder_0)和(field_character_server =:db_condition_placeholder_1)限制 1 偏移量 0;CustomVerify_CheckName() 中的数组( [:db_condition_placeholder_0] => David Mortimer [:db_condition_placeholder_1] => Saturn )(C:\xampp\htdocs\drupal\sites\all\modules\customverify\customverify.module 的第 78 行)。
使用此消息,我尝试了几种变体,结果都相同。您可以从条件占位符中看到,用户的个人资料数据正在从场外 DOM 中检索出来。
显然我的问题是没有完全理解如何构造这个查询来检索必要的信息。这些字段作为“field_character_first_name”和“field_character_server”附加到用户的默认配置文件(我没有使用任何自定义配置文件模块) - 由于人们可以在不同的服务器上使用相同的名称,我需要检查角色名称是否不存在于解析 DOM 对象返回的服务器上;并重申 DOM 对象部分运行良好。