您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第4行的“WHERE j.id_customer = 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
这是从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.'
');
}
解决方法:
您缺少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
WHERE j.id_customer = 1
如果您要加入表格,则需要在字段上链接它们.否则,您正在执行交叉连接.
MySQL Docs状态:
In MySQL, JOIN, CROSS JOIN, and INNER JOIN are syntactic equivalents (they can replace each other). In standard SQL, they are not equivalent. INNER JOIN is used with an ON clause, CROSS JOIN is used otherwise.
这样可行:
SELECT j.id_customer, j.id_order, m.id_shop FROM ps_orders j
JOIN ps_order_detail m
WHERE j.id_customer = 1
就像这样:
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
但它对OUTER JOIN不起作用.
标签:php,mysql,sql
来源: https://codeday.me/bug/20190715/1467589.html