问题描述
我正在用C编写一个客户端来管理图书馆信息系统。我在客户端中编写了此sql查询,但出现此语法错误。有人可以帮助我找到此错误吗?谢谢。
错误->错误1064(42000):您的SQL语法有错误; 检查与您的MariaDB服务器版本相对应的手册 正确的语法,以在CD的内部将COPIA用作C on (CD.COPIA_idCOPIA = C.idCOPIA)第1行的内部联接LIBRO a'
代码:
snprintf(q,1024,"SELECT CD.COPIA_idCOPIA,CD.Ripiano,CD.Scaffale
FROM COPIA DISPONIBILE as CD
inner join COPIA as C on (CD.COPIA_idCOPIA = C.idCOPIA)
inner join LIBRO as L on (C.LIBRO_idLIBRO = L.idLIBRO)
inner join POSSEDERE as P on (C.idCOPIA = P.COPIA_idCOPIA)
WHERE P.BIBLIOTECA_idBIBLIOTECA = '%d' and L.Nome = '%s'",idBiblioteca,buffer);
if(mysql_query(conn,q)!= 0) {
print_error (conn,"query SELECT statement failed");
} else {
printf ("query SELECT statement succeeded: %lu rows affected(unsignedlong)mysql_affected_rows (conn));
}
解决方法
如果您的表真的叫COPIA DISPONIBILE
,并且其中有一个空格,则必须通过用反引号将其包围来对其进行转义:
snprintf(q,1024,"SELECT CD.COPIA_idCOPIA,CD.Ripiano,CD.Scaffale
FROM `COPIA DISPONIBILE` as CD
inner join COPIA as C on (CD.COPIA_idCOPIA = C.idCOPIA)
inner join LIBRO as L on (C.LIBRO_idLIBRO = L.idLIBRO)
inner join POSSEDERE as P on (C.idCOPIA = P.COPIA_idCOPIA)
WHERE P.BIBLIOTECA_idBIBLIOTECA = '%d' and L.Nome = '%s'",idBiblioteca,buffer);