问题描述
我正在用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);