我必须使用PHP和MySQL选择很多表和字段。但这些的结构和命名每次都是一样的。
表格别名 blablabla_table 表格 field_revision_blabla ,字段 blablabla_value 。
for ($i=0; $i < sizeof($typeFields); $i++) {
$query->join(
"field_revision_".$typeFields[$i],
$typeFields[$i]."_table",
'n.nid = $typeFields[$i]."_table.entity_id"');
$query->addField($typeFields[$i]."_table", $typeFields[$i]."_value");
}
但这给了我错误:
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;查看与MySQL服务器版本对应的手册,以便在'[$ i]附近使用正确的语法。“_ table.entity_id”INNER JOIN field_revision_field_text field_text_table O'在第2行
我认为错误在
'n.nid = $typeFields[$i]."_table.entity_id"'
答案 0 :(得分:2)
SO的颜色编码应该为您标记这个...以及SQL语句抱怨查询中的变量。您的$typeFields[$i]
未在字符串中计算。
"n.nid = " . $typeFields[$i] . "_table.entity_id"
答案 1 :(得分:1)
使用双引号而不是单引号,我怀疑你在包含n.nid = $typeFields[$i]."_table.entity_id"
的数据库中有记录:
for ($i=0; $i < sizeof($typeFields); $i++) {
$query->join(
"field_revision_".$typeFields[$i],
$typeFields[$i]."_table",
"n.nid = ".$typeFields[$i]."_table.entity_id");
$query->addField($typeFields[$i]."_table", $typeFields[$i]."_value");
}