您的SQL语法有错误; 检查手册

use*_*107 3 php mysql sql

您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在'WHERE j附近使用正确的语法.id_customer第4行= 1'

SELECT j.`id_customer`, j.`id_order`, m.`id_shop`
        FROM `ps_orders` j     
        LEFT JOIN `ps_order_detail` m   
        WHERE j.`id_customer` = 1
Run Code Online (Sandbox Code Playgroud)

这是从prestashop php中的原始代码生成的,如果打开详细的错误纠正-------

 foreach ($result as $key)
        {
                        $customer_id_is = 1;
             $product_id_is = 5;
                    $result2 = Db::getInstance()->executeS(
        'SELECT j.`id_customer`, j.`id_order`, m.`id_shop`
        FROM `'._DB_PREFIX_.'orders` j     
        LEFT JOIN `'._DB_PREFIX_.'order_detail` m   
        WHERE j.`id_customer` = '.$customer_id_is.'


          ');  

        }
Run Code Online (Sandbox Code Playgroud)

Gar*_*thD 9

您缺少JOIN中的ON子句

SELECT j.id_customer, j.id_order, m.id_shop FROM ps_orders j
LEFT JOIN ps_order_detail m
    ON m.SomeField = j.SomeField <-- HERE 
WHERE j.id_customer = 1
Run Code Online (Sandbox Code Playgroud)

如果您要加入表格,则需要在字段上链接它们.否则,您正在执行交叉连接.

MySQL Docs状态:

在MySQL中,JOIN,CROSS JOIN和INNER JOIN是语法等价物(它们可以互相替换).在标准SQL中,它们不等效.INNER JOIN与ON子句一起使用,否则使用CROSS JOIN.

这样可行:

SELECT j.id_customer, j.id_order, m.id_shop FROM ps_orders j
JOIN ps_order_detail m
WHERE j.id_customer = 1
Run Code Online (Sandbox Code Playgroud)

就像这样:

SELECT j.id_customer, j.id_order, m.id_shop FROM ps_orders j
INNER JOIN ps_order_detail m
WHERE j.id_customer = 1
Run Code Online (Sandbox Code Playgroud)

但它对OUTER JOIN不起作用.