【问题标题】:MySQL Syntax Error in PHP ScriptPHP 脚本中的 MySQL 语法错误
【发布时间】:2013-10-14 08:00:32
【问题描述】:

我在 MySQL 中有一个运行良好的查询,但是当我将查询复制到我的 PHP 文件中时,它向我抛出了一个语法错误:** 意外 ") as week_ending ** 我错过了什么?

MySQL:

'SELECT COUNT(*) as count,region, DATE_FORMAT(NOW(),'%d %b %y') as week_ending FROM stores.stats WHERE date > DATE_ADD(DATE(现在()),间隔-1周)和date region,日期(现在())';

PHP:

$stmt = DB::query(Database::SELECT, 'SELECT COUNT(*) as count,region, DATE_FORMAT(NOW(),'%d %b %y'), as @987654330 @ FROM stores.stats WHERE date > DATE_ADD(DATE(NOW()), INTERVAL -1 WEEK) AND date region, DATE(NOW())';

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    您的 SQL 中间有几个单引号会提前终止您的请求。您只需要在此处转义附近的引号即可:

    DATE_FORMAT(NOW(),'%d %b %y'),
    

    像这样:

    DATE_FORMAT(NOW(),\'%d %b %y\'),
    

    【讨论】:

      【解决方案2】:

      除了不转义包含的引号之外,您也没有关闭方法调用。

      $stmt = DB::query(
          Database::SELECT,
          'SELECT COUNT(*) as count,region, DATE_FORMAT(NOW(),\'%d %b %y\'), as week_ending FROM stores.stats WHERE date > DATE_ADD(DATE(NOW()), INTERVAL -1 WEEK) AND date < DATE(NOW()) GROUP BY region, DATE(NOW())'
      );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-30
        • 1970-01-01
        • 2013-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多