0

I have to select a lot of tables and Fields using PHP and MySQL. But the structure and naming of these are every time the same.

I have the tables field_revision_blabla and the fields blablabla_value from table-alias 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");
}

But that gives me the error:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[$i])."_table.entity_id" INNER JOIN field_revision_field_text field_text_table O' at line 2

I think the error is in

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

2 Answers 2

2

SO's color coding should have flagged this for you...along with the SQL statement complaining about variables in the query. Your $typeFields[$i] isn't being figured in the string.

"n.nid = " . $typeFields[$i] . "_table.entity_id"
Sign up to request clarification or add additional context in comments.

Comments

1

Use double quotes instead of single, I doubt you have record in DB containing 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");
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.