加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 22:06:03 所属栏目:PHP教程 来源:网络整理
导读:您的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 这是从
您的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`,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 <-- HERE 
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,m.id_shop FROM ps_orders j
JOIN ps_order_detail m
WHERE j.id_customer = 1

就像这样:

SELECT j.id_customer,m.id_shop FROM ps_orders j
INNER JOIN ps_order_detail m
WHERE j.id_customer = 1

但它对OUTER JOIN不起作用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读