我不明白这个错误

时间:2014-11-05 09:14:59

标签: php mysql syntax

我不明白这个错误

  

Erreur desyntaxeprèsde','196,000,000','6357007','6357006','',   '先生。 hasan','','',''àlaligne 2

这是我的表创建:

CREATE TABLE `comp` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `COMPANY_NAME` varchar(500) NOT NULL,
  `ACTIVITY` text NOT NULL,
  `CITY` varchar(150) NOT NULL,
  `NUM_COMPANY_FOLLOW` int(11) DEFAULT NULL,
  `NUM_BRANCH` int(11) DEFAULT NULL,
  `ASSETS` text,
  `PHONE1` varchar(100) NOT NULL,
  `PHONE2` varchar(100) DEFAULT NULL,
  `E_MAIL` varchar(250) DEFAULT NULL,
  `DIRECTOR_NAME` varchar(500) NOT NULL,
  `COMPANY_SITE` varchar(250) DEFAULT NULL,
  `COMPANY_ADDRESS` text,
  `HEAD_LOCATION` varchar(100) DEFAULT NULL,
  `HEAD_DIRECTORS_NAME` text NOT NULL,
  `VICE_HEAD_NAME` varchar(500) NOT NULL,
  `BOARD_MEMBER` text,
  `BRIEF_DESC` text,
  `EVALUE` varchar(250) DEFAULT NULL,
  `NOTES` text,
  `USERID_ADD` int(11) DEFAULT NULL,
  `IP_ADD` varchar(15) DEFAULT NULL,
  `DATE_ADD` int(11) DEFAULT NULL,
  `USERID_EDIT` int(11) DEFAULT NULL,
  `IP_EDIT` varchar(15) DEFAULT NULL,
  `DATE_EDIT` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=cp1256

这是我的代码:

$sql = "INSERT INTO comp (ID, COMPANY_NAME, ACTIVITY, CITY, NUM_COMPANY_FOLLOW, NUM_BRANCH, ASSETS, PHONE1, PHONE2, E_MAIL, DIRECTOR_NAME, COMPANY_SITE, COMPANY_ADDRESS, HEAD_LOCATION, HEAD_DIRECTORS_NAME, VICE_HEAD_NAME,BOARD_MEMBER, BRIEF_DESC, EVALUE, NOTES, USERID_ADD, IP_ADD, DATE_ADD)  
            VALUES (NULL, '$COMPANY_NAME', '$ACTIVITY', '$CITY', $NUM_COMPANY_FOLLOW, $NUM_BRANCH, '$ASSETS', '$PHONE1', '$PHONE2', 
            '$E_MAIL', '$DIRECTOR_NAME', '$COMPANY_SITE', '$COMPANY_ADDRESS', '$HEAD_LOCATION', '$HEAD_DIRECTORS_NAME', '$VICE_HEAD_NAME',  
            '$ALL_BOARD_MEMBER', '$BRIEF_DESC', '$EVALUE', '$NOTES', $this_userID, '$IP_ADD', $DATE_ADD)";

$result = $db->Execute($sql);
echo mysql_error();

print sql:

INSERT INTO comp 
(
    ID, 
    COMPANY_NAME, 
    ACTIVITY, 
    CITY, 
    NUM_COMPANY_FOLLOW, 
    NUM_BRANCH, 
    ASSETS, 
    PHONE1, 
    PHONE2, 
    E_MAIL, 
    DIRECTOR_NAME, 
    COMPANY_SITE, 
    COMPANY_ADDRESS, 
    HEAD_LOCATION, 
    HEAD_DIRECTORS_NAME, 
    VICE_HEAD_NAME,
    BOARD_MEMBER, 
    BRIEF_DESC, 
    EVALUE, 
    NOTES, 
    USERID_ADD, 
    IP_ADD, 
    DATE_ADD
) 
VALUES 
(
    NULL, 
    'ANAAM', 
    'hello1', 
    'jeddah', 
    , 
    , 
    '', 
    '6357007', 
    '6357006', 
    '', 
    'mr mohammed', 
    '', 
    '', 
    '', 
    'mr adnan', 
    'mr naser', 
    '', 
    '', 
    '', 
    '', 
    1, 
    '127.0.0.1', 
    1415180296
)

4 个答案:

答案 0 :(得分:1)

看起来依赖于数据,修复代码的最佳方法是使用dprepared语句重写语句。这也可以避免SQL注入的漏洞。看看这个问题的答案:How can I prevent SQL injection in PHP?

答案 1 :(得分:1)

如果查看查询的值部分:

(NULL, 'ANAAM', 'hello1', 'jeddah', , , '', '6357007', '6357006', '', 'mr mohammed', '', '', '', 'mr adnan', 'mr naser', '', '', '', '', 1, '127.0.0.1', 1415180296)

您会看到, , ,,因为数据为空,会产生错误。因此,在数字值周围加上括号,就像使用ascii值一样。或者使用默认值(0?)。

此外,删除sql-query中的ID值,它会自动递增。

编辑代码:

$sql = "INSERT INTO comp (COMPANY_NAME, ACTIVITY, CITY, NUM_COMPANY_FOLLOW, NUM_BRANCH, ASSETS, PHONE1, PHONE2, E_MAIL, DIRECTOR_NAME, COMPANY_SITE, COMPANY_ADDRESS, HEAD_LOCATION, HEAD_DIRECTORS_NAME, VICE_HEAD_NAME,BOARD_MEMBER, BRIEF_DESC, EVALUE, NOTES, USERID_ADD, IP_ADD, DATE_ADD)  
            VALUES ('$COMPANY_NAME', '$ACTIVITY', '$CITY', '$NUM_COMPANY_FOLLOW', '$NUM_BRANCH', '$ASSETS', '$PHONE1', '$PHONE2', 
            '$E_MAIL', '$DIRECTOR_NAME', '$COMPANY_SITE', '$COMPANY_ADDRESS', '$HEAD_LOCATION', '$HEAD_DIRECTORS_NAME', '$VICE_HEAD_NAME',  
            '$ALL_BOARD_MEMBER', '$BRIEF_DESC', '$EVALUE', '$NOTES', '$this_userID', '$IP_ADD', '$DATE_ADD')";

$result = $db->Execute($sql);
echo mysql_error();

答案 2 :(得分:0)

这意味着第2行' , '196,000,000', '6357007', '6357006', '', 'mr. hasan', '', '', ''附近的语法错误。换句话说,它是SQL错误

这是因为您的查询中有简要说明。变量的值肯定包含坏字符。如果你有像撇号这样的东西,那么一定要逃避字符串......

希望这有帮助! :d

答案 3 :(得分:0)

我们肯定需要更多的代码,比如$ sql的回声。

但我在声明中看到了一个额外的错误。 您将ID定义为NOT NULL,自动增量和主键。在查询中,为id设置NULL。这将返回错误。

从语句中删除“ID”列。