PHP MySQL查询中的for循环和变量

时间:2013-07-02 11:34:46

标签: php mysql variables for-loop

我必须使用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"'

2 个答案:

答案 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");
}