2013-07-02 4 views
0

Мне нужно выбрать множество таблиц и полей с помощью PHP и MySQL. Но структура и обозначение их каждый раз одинаковы.For-loop и переменные в PHP MySQL Query

У меня есть таблицы 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 для правильного синтаксиса использовать вблизи «[$ я]).„_ 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":

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