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, ...
括号后面有一个逗号,所以是无意义的语法。
我有以下查询:
$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, ...
括号后面有一个逗号,所以是无意义的语法。