把二开过程中遇到的难题,在这里与网友讨论求解;
把二开过程中得到的体验,在这里与网友分享求实;
先开个头,以后慢慢添加。
当初做业务引擎需要在flow_hook表中添加一条记录,SQL语句是这样的:
- $query= "INSERT INTO flow_hook (hname,hdesc,hmodule,plugin,status,map,condition,condition_set,system) VALUES(…………);"
复制代码
运行结果,就是报错,查了错误日志:
错误#1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near……
还是语焉不详,是语法错误,但错在哪呢?多次折腾,发现只要不写condition字段,就不出错。当时因为急着用,就绕道走啦,不写就不写。
先告诉用户一个权宜之计,使用业务引擎的时候,把触发条件手工添加上,一样用。回过头来,慢慢找。
反复打量着这条语句,忽然灵光一现——condition是SQL语句的关键字呀!怪不得系统犯傻呢!
找到原因就好办。
一是构建数据库表时,应尽量避免使用SQL的关键字做字段名。二是像这样既成的表,你不用也得用,无法去避免,那就把关键字用“`”号括起来。
正确的写法,就是:
- $query= "INSERT INTO flow_hook (hname,hdesc,hmodule,plugin,status,map,`condition`,condition_set,system) VALUES(…………);"
复制代码
|