/ / Perché la query mostra errori di sistema? [duplicato] - php, mysql

Perché la query mostra errori di sistema? [duplicato] - php, mysql

Ho una domanda, voglio scriverla in php ma mostra l'errore.

La mia domanda è come di seguito:

$exe1 = mysql_query("
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
"SUM(CASE WHEN `size_name` = """,
`size_name`,
""" THEN Quantity ELSE 0 END) AS `",
`size_name`, "`"
)
) INTO @sql
FROM Size;

SET @sql = CONCAT("SELECT st.Style , ", @sql, "
FROM Size s
JOIN Style st ON s.style_id = st.id
GROUP BY st.Style
");

PREPARE stmt FROM @sql;
EXECUTE stmt;") or die(mysql_error());

Ma sta mostrando il messaggio

Si è verificato un errore nella sintassi SQL; controlla ilmanuale che corrisponde alla versione del server MySQL per la sintassi corretta da utilizzare vicino a "SET @sql = CONCAT (" SELECT st.Style, ", @sql," FROM Size s "a linea 12

Non so proprio come risolvere questo errore. Qualcuno può aiutarmi per favore a risolvere questo problema?

risposte:

0 per risposta № 1

È necessario stampare la query risultante in @sql per vedere il problema.

Nel tuo caso, sembreresti avere una virgola in più dopo l'ultimo argomento. Prova a cambiare la linea:

SET @sql = CONCAT("SELECT st.Style , ", @sql, "
FROM Size s
JOIN Style st ON s.style_id = st.id
GROUP BY st.Style
");

a:

SET @sql = CONCAT("SELECT st.Style , ", @sql"
FROM Size s
JOIN Style st ON s.style_id = st.id
GROUP BY st.Style
");

0 per risposta № 2

mysql_query non supporta più query.

http://php.net/manual/en/function.mysql-query.php

Le funzioni mysql_ * sono obsolete e verranno eliminate. Ti consiglio di usare le funzioni mysqli_ * o DOP.