mysql 和 PHP 中的 Concat 语句导致 mysqli_query 到 return false

Concat statement in mysql with PHP causes mysqli_query to return false

我有以下查询:

$sqlquery="SELECT CONCAT_WS(".",php_version_major, php_version_minor, php_version_build) AS phpversion, COUNT(id) AS COUNT, YEAR(createdate) AS YEAR, MONTH(createdate) AS MONTH FROM logs_checklist_interface GROUP BY phpversion, YEAR(createdate), MONTH(createdate) ORDER BY createdate ASC";

$rsData=mysqli_query($dblink,$sqlquery);

$rsData returns FALSE 此查询。原因似乎是 concat_ws 声明。如果我删除它,它工作正常。我试过另一个 CONCAT 函数,结果是一样的。

如此简单的语句导致 mysqli_query() 不高兴有什么问题?

如果你这样做:

$myString = "abc" . "xyz";

你得到的是字符串abcxyz,不是abc"."xyz

我想您认为 " 在您打算将其用作 SQL 表达式中的字符串定界符的情况下与 PHP 的含义不同。

$sqlquery="SELECT CONCAT_WS(".",php_version_major,
          ^ php quote       ^ ^ sql string delimiters?

但不幸的是,事实并非如此。 PHP 将 " 的两个实例都视为 PHP 引号。因此这是两个 PHP 字符串,使用 PHP 字符串连接运算符 ..

所以得到的 SQL 查询是:

SELECT CONCAT_WS(,php_version_major, ...

括号后面有一个逗号,所以是无意义的语法。