php 检查sql,php – 您的SQL语法有错误;检查手册

您的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值