如果我在Navicat或phpmyadmin中运行它或直接在MySQL中运行,我有一个完美运行的查询,但是当我通过PHP运行它时,我无法使它工作。这是PHP的限制还是我需要重构查询。请指教。
这是PHP中的查询($ supplierAAIAID在脚本的前面定义):
$query = <<<eof
SET group_concat_max_len = 100000000;
SET @sql = NULL;
SELECT GROUP_CONCAT(DISTINCT CONCAT(' MAX(IF(`AttributeID` = ''',`AttributeID`,''', `AttributeData`, NULL)) AS `',`AttributeID`,'`')) INTO @sql
FROM `attributes`
WHERE `BrandAAIAID` = '{$supplierAAIAID}' ;
SET @sql = CONCAT('SELECT CONCAT(`PartNumber`,''-'',`BrandAAIAID`) AS `ProductCode`, ', @sql, ' FROM `attributes` WHERE `BrandAAIAID` = ''{$supplierAAIAID}'' GROUP BY `PartNumber` ORDER BY `PartNumber`');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
eof;
$result = mysqli_query($link, $query) or die("Selection Error " . mysqli_error($link));
同样,如果我直接在MySQL或Navicat中运行它,则此查询有效。我在PHP中遇到以下错误,但我不知道要改变什么。
选择错误您的SQL语法中有错误;检查手册 对应于您的MySQL服务器版本,以获得正确的语法 在'SET @sql = NULL;
附近使用