1.If you use INSERT into table VALUES ... without the list of column,all the values of each column should be in the list of VALUES().2."INSERT INTO ".$sql_art." VALUES...."3.values('','$name','$author','$content','$lid','$time','$visit','$good','$upall','$news','$newsurl','$html','$ubb','$time') is ok when all the variables are in char type.

解决方案 »

  1.   

    mysql_query("INSERT INTO `$sql_art` VALUES('','$name','$author','$content','$lid','$time','$visit','$good','$upall','$news','$newsurl','$html','$ubb','$time')");
      

  2.   

    $sql_art=Tbl;//这样的INSERT INTO $sql_art VALUES
    估计问题在这里的$sql_art上,换成你的表名,试一下。如果换成表名可以,这样替代$sql_art
    `$sql_art`
      

  3.   

    mysql_query("INSERT INTO admin VALUES (1, '$user', '$pw', 1)");能通过
    那么检查
    mysql_query("INSERT INTO admin VALUES (1, '$user', '$pw', '1')");
    mysql_query("INSERT INTO admin VALUES ('', '$user', '$pw', '1')");
    是否能通过
      

  4.   

    这个问题没有具体的错误信息,只有乱猜了,
    我猜问题是你的变量里面比如$author可能内容里面包含了单引号
    所以导致不合法的sql语句,不知道有没有蒙对?
      

  5.   

    什么样的语法无所谓,关键是你要遵循php和mysql的规则。去查查php手册和mysql手册对语法的要求,如php中""和''的区别,mysql中,什么字段类型需要加''号的。你执行的那条sql语句,先在IDE上看看是否符合php的规则,然后用echo把他打印出来,看看打印的结果是否符合mysql的要求。如果两方面都符合再拿去执行就不会出错了。所以,在php这边写sql语句,你要考虑周全,既不能影响php这边的逻辑和规则,也不能影响mysql的逻辑和规则。引号一定要闭合!这可不仅仅关系到是执行是否能成功。你不闭合,hacker可以在浏览器上帮你闭合,然后就开始sql injection了另外表名最好用`(大键盘数字1前面那个键)符号扩起来,这样即使你的表名是mysql的关键字,也不会造成冲突。
      

  6.   

    变量里含有单引字符("'"),也可能导致sql插入失败!
      

  7.   

    你把两种方法得到的sql语句htmlspecialchars后echo出来看看,有什么不同?
      

  8.   

    前一个: VALUES (1,
    后一个: VALUES ('',
    字段类型不匹配!一般在双引号字符串中用变量比如"My name is $name!",
    最好是写成"My name is {$name}!"明确的告诉PHP,我的花括号中是变量!
      

  9.   

    $sql_str="INSERT INTO $sql_art VALUES('','$name','$author','$content','$lid','$time','$visit','$good','$upall','$news','$newsurl','$html','$ubb','$time')";
    echo $sql_str;楼主把这个sql语句echo出来然后在数据库里执行一下不就知道了嘛?!