2013-07-02 56 views
0

我必須使用PHP和MySQL選擇很多表和字段。但是這些結構和命名都是一樣的。PHP中的For循環和變量MySQL查詢

我有表field_revision_blabla和領域blablabla_value從表的別名blablabla_table

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

SO的顏色編碼應該已經標記了這一點......以及抱怨查詢中的變量的SQL語句。您的$typeFields[$i]不在字符串中。

"n.nid = " . $typeFields[$i] . "_table.entity_id" 
+0

是啊,這是一個愚蠢的問題... – dba

1

使用雙引號,而不是單一的,我懷疑你在含n.nid = $typeFields[$i]."_table.entity_id" DB有記載:

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