【问题标题】:I'm not using count but my log told me "count syntax error"我没有使用计数,但我的日志告诉我“计数语法错误”
【发布时间】:2020-04-02 07:46:52
【问题描述】:

我有一个在 PHP 中看起来像这样的请求:

SELECT 
   CONTACT.NOM, 
   CONTACT.PRENOM,
   CONTACT.TITRE, 
   CONTACT.COMMENT2, 
   CONTACT.TEL, 
   CONTACT.FAX, 
   CONTACT.EMAIL, 
   SERVICES.NOM AS SERV 
FROM 
   CONTACT, SERVICES
WHERE 
   CONTACT.SECLEUNIK = SERVICES.SECLEUNIK AND 
   CONTACT.CLCLEUNIK = :idClient AND 
   (
      CONTACT.NOM LIKE %:nom% COLLATE FRENCH_CI_AI OR 
      CONTACT.PRENOM LIKE %:prenom% COLLATE FRENCH_CI_AI
   )

$prepare->execute(array(
            ':idClient' => $idClient,
            ':nom' => $nomClient

          ));

我的日志给了我这个错误:

/var/www/WebService/src/Controller/DefaultController.php 第 893 行的“COUNT 字段不正确或语法错误”

第893行是:':nom' => $nomClient,我不明白为什么错误中有一个“计数”,不知道如何解决。

【问题讨论】:

  • 它没有回答问题,但您已经有 28 年的时间开始使用 ANSI-92 JOIN 语法;很久以前你就开始了。 Bad habits to kick : using old-style JOINs
  • 语句需要绑定3个参数——:idClient:nom:prenom
  • LIKE '%' + :prenom + '%'..
  • @Zhorov "Syntaxe wronge vers '@P2'",现在我有这个错误,我不明白,因为这个请求是一个月前创建的并且可以工作,但是从今天开始它不再工作了
  • @jarlh 好的,你解决了,谢谢发布答案

标签: php sql sql-server


【解决方案1】:

我认为您的错误的实际原因是您的语句中有三个参数(:idClient:nom:prenom),但您在 execute() 方法中传递了两个参数。

另外,您需要正确使用LIKE 运算符并使用适当的JOIN 语法更改语句:

声明(基于问题中的代码):

SELECT 
    CONTACT.NOM, 
    CONTACT.PRENOM,
    CONTACT.TITRE, 
    CONTACT.COMMENT2, 
    CONTACT.TEL, 
    CONTACT.FAX, 
    CONTACT.EMAIL, 
    SERVICES.NOM AS SERV 
FROM CONTACT 
INNER JOIN SERVICES ON SERVICES.SECLEUNIK = CONTACT.SECLEUNIK
WHERE 
    CONTACT.CLCLEUNIK = :idClient AND 
    (
        CONTACT.NOM LIKE CONCAT('%', :nom, '%') COLLATE FRENCH_CI_AI OR 
        CONTACT.PRENOM LIKE CONCAT('%', :prenom, '%') COLLATE FRENCH_CI_AI
    )

PHP:

<?php

...
$prepare->execute(
   array(
      ':idClient' => $idClient,
      ':nom' => $nomClient,
      ':prenom' => $prenomClient 
   )
);
...

?>

【讨论】:

    【解决方案2】:

    您必须将类似的通配符连接到参数,例如:

    LIKE '%' + :prenom + '%'
    

    【讨论】:

      猜你喜欢
      • 2013-12-27
      • 2021-11-09
      • 2013-12-20
      • 1970-01-01
      • 2019-04-02
      • 2015-11-06
      • 2020-05-03
      • 2012-07-13
      • 1970-01-01
      相关资源
      最近更新 更多