SQLSTATE [42000]:语法错误或访问冲突:1064 PHP/MySQL [关闭]

Posted

技术标签:

【中文标题】SQLSTATE [42000]:语法错误或访问冲突:1064 PHP/MySQL [关闭]【英文标题】:SQLSTATE[42000]: Syntax error or access violation: 1064 PHP/MySQL [closed] 【发布时间】:2013-09-27 13:14:02 【问题描述】:

我正在创建一个脚本,以将我在 mysql 中创建的查询结果以表格格式自动导出到电子邮件中。我让它工作到我收到 2 封电子邮件,一封电子邮件给我错误:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法 [SELECT COUNT(*) as count,region, MONTHNAME(date) asmonth FROM tempur_stores。 stats WHERE date > DATE_ADD(DATE(NOW()), INTERVAL -1 WEEK) AND date region, MONTH(date ] 我确定我的语法是正确的,因为每当我在 SQL 本身中运行查询时都会得到预期的结果。

另一封电子邮件只有我在代码中指定的标题、countregionmonth

有什么建议我哪里出错/遗漏了什么?

php

public function action_third_party_searches() 


    $stmt = DB::query(Database::SELECT, 'SELECT COUNT(*) as `count`,`region`, MONTHNAME(`date`) as`month` FROM tempur_stores.stats WHERE `date` > DATE_ADD(DATE(NOW()), INTERVAL -1 WEEK) AND `date` < DATE(NOW()) GROUP BY `region`, MONTH(`date`');
    $result = $stmt;
    $sendTo = 'myemail@live.com';
    try 
        $result = $stmt->execute()->as_array();
     catch (Exception $e) 
        mail('myemail@live.com', 'Tempur 3rd Party Store Locator Searches', $e->getMessage());
    

    $subject = 'Third Party Store Locator Searches - '.date("Y-m-d", strtotime("-1 week")).' - '.date("Y-m-d");
    if (count($result) > 0) 
        $toEmail = array('
            <html>
            <head>
            <title>Third Party Store Locator Searches</title>
            </head>
            <body>
            <table>
                <tr>
                    <td>Count</td>
                    <td>Region</td>
                    <td>Month</td>
                </tr>
        ');
        foreach ($result as $row) 
            $toEmail[] = '
                <tr>
                    <td>'.$row['count'].'</td>
                    <td>'.$row['region'].'</td>
                    <td>'.$row['month'].'</td>
                </tr>
            ';
        
        $toEmail[] = '
                </table>
                </body>
                </html>';
     else 
        $toEmail = array('No searches were taken last week!');
    

    $headers = "Content-type: text/html; charset=utf-8\n".
    "X-Mailer: PHP/".phpversion()."\n".
    "MIME-Version: 1.0\n".
    "From: T UK <no-reply@me.com>\n".
    "Mailed-by: T UK <no-reply@me.com>\n".
    "Reply-To: T UK <no-reply@me.com>\n".
    "Return-Path: T UK <no-reply@me.com>\n";

    mail($sendTo, $subject, implode('', $toEmail), $headers);
   //   mail('myemail@live.com', $subject, implode('', $toEmail), $headers);


【问题讨论】:

【参考方案1】:

您的查询中缺少右括号:

$stmt = DB::query(Database::SELECT, 'SELECT COUNT(*) as `count`,`region`, MONTHNAME(`date`) as`month`
                                     FROM tempur_stores.stats
                                     WHERE `date` > DATE_ADD(DATE(NOW()), INTERVAL -1 WEEK)
                                     AND `date` < DATE(NOW())
                                     GROUP BY `region`, MONTH(`date`');
                                                        ----------  ^ right there

【讨论】:

我的查询末尾有一个 '? 叹息...只需在撇号前加一个括号 ) 就可以了。 对不起!我的错,我应该更仔细地阅读!谢谢它有效! 嗨,我知道这是一个老问题,但我收到了同样的问题,这里是问题的链接,希望你能有所帮助。 ***.com/questions/24657044/…

以上是关于SQLSTATE [42000]:语法错误或访问冲突:1064 PHP/MySQL [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.8 SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误

SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误 - LARAVEL

Cakephp SQLSTATE [42000]:语法错误或访问冲突:1064

带有消息“SQLSTATE [42000]”的未捕获异常“PDOException”:语法错误或访问冲突:

SQLSTATE [42000]:语法错误或访问冲突:1064 PHP/MySQL [关闭]

为啥我是 laravel 抛出 SQLSTATE[42000]:语法错误或访问冲突:1064 错误