我没有';我不能理解这个错误


I don't understand this error

我不理解这个错误

语法错误,"196000000","6357007","6.357006",","。有一个',','','àla ligne 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();

打印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
)

如果您查看查询的值部分:

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

您将看到, , ,,它会在数据为空时创建一个错误。所以把括号放在数值周围,就像用ascii值一样。或者使用默认值(0?)。

此外,在sql查询中删除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();

看起来依赖于数据,修复代码的最佳方法是使用数据准备语句重写语句。这也可以避免SQL注入的漏洞。看看这个问题的答案:如何防止PHP中的SQL注入?

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

这是因为您的查询中有简短的描述。变量的值肯定包含不正确的字符。如果你有撇号之类的东西,一定要转义字符串。。。

希望这能有所帮助!:D

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

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

从语句中删除列"ID"。