非常郁闷的问题!!!!

ksj123 2006-08-03 10:08:34
为什么同一种语法 mysql_query("INSERT INTO admin VALUES (1, '$user', '$pw', 1)");能通过
而mysql_query("INSERT INTO $sql_art VALUES('','$name','$author','$content','$lid','$time','$visit','$good','$upall','$news','$newsurl','$html','$ubb','$time')");这种却不能通过
VALUES括号里的变量都是一样用单引号表示的

后来问群里的朋友 说后一种语法应该改成values('','".$name."','".$author."','".$lid."','".$time."'....)
为什么第一种能通过,第二种一定要改成这样呢 非常不解!谁能说下 或是告诉一下这方面的资料
...全文
412 16 打赏 收藏 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanxw_227 2006-11-28
  • 打赏
  • 举报
回复
$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出来然后在数据库里执行一下不就知道了嘛?!
PleaseDoTellMeWhy 2006-11-27
  • 打赏
  • 举报
回复
前一个: VALUES (1,
后一个: VALUES ('',
字段类型不匹配!

一般在双引号字符串中用变量比如"My name is $name!",
最好是写成"My name is {$name}!"明确的告诉PHP,我的花括号中是变量!
helloyou0 2006-11-27
  • 打赏
  • 举报
回复
你把两种方法得到的sql语句htmlspecialchars后echo出来看看,有什么不同?
peterspace 2006-11-27
  • 打赏
  • 举报
回复
最好改成 ".$var."
hqulyc 2006-11-20
  • 打赏
  • 举报
回复
变量里含有单引字符("'"),也可能导致sql插入失败!
wwx840723 2006-11-20
  • 打赏
  • 举报
回复
又学到知识了~
liany2023 2006-11-20
  • 打赏
  • 举报
回复
一般的变量名不都要加上一对引号''吗?
在做插入的时候要避免出现单引号,否则就会有语法错误.
或者单引号用'\'反斜杠一个.......

an9ryfr09 2006-11-19
  • 打赏
  • 举报
回复
什么样的语法无所谓,关键是你要遵循php和mysql的规则。去查查php手册和mysql手册对语法的要求,如php中""和''的区别,mysql中,什么字段类型需要加''号的。

你执行的那条sql语句,先在IDE上看看是否符合php的规则,然后用echo把他打印出来,看看打印的结果是否符合mysql的要求。如果两方面都符合再拿去执行就不会出错了。

所以,在php这边写sql语句,你要考虑周全,既不能影响php这边的逻辑和规则,也不能影响mysql的逻辑和规则。

引号一定要闭合!这可不仅仅关系到是执行是否能成功。你不闭合,hacker可以在浏览器上帮你闭合,然后就开始sql injection了

另外表名最好用`(大键盘数字1前面那个键)符号扩起来,这样即使你的表名是mysql的关键字,也不会造成冲突。
qngzh 2006-11-19
  • 打赏
  • 举报
回复
这个问题没有具体的错误信息,只有乱猜了,
我猜问题是你的变量里面比如$author可能内容里面包含了单引号
所以导致不合法的sql语句,不知道有没有蒙对?
guileen 2006-11-19
  • 打赏
  • 举报
回复
T_T >_< ~_~
  • 打赏
  • 举报
回复
MARK
xuzuning 2006-08-04
  • 打赏
  • 举报
回复
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')");
是否能通过
wen8u8 2006-08-04
  • 打赏
  • 举报
回复
$sql_art=Tbl;//这样的

INSERT INTO $sql_art VALUES
估计问题在这里的$sql_art上,换成你的表名,试一下。如果换成表名可以,这样替代$sql_art
`$sql_art`
keaizhong 2006-08-04
  • 打赏
  • 举报
回复
应该和字段类型有关,因为用单引号不会返回变量值,而是被当成字符串处理了。
所以我怀疑你的第二个语句的表字段有非字符型的,改成双引号就不一样了,可以得到结果,符合你的表字段类型。

不过楼主还是发布一下错误提示,我们好判断问题出在哪里。
lantersen 2006-08-04
  • 打赏
  • 举报
回复
mysql_query("INSERT INTO `$sql_art` VALUES('','$name','$author','$content','$lid','$time','$visit','$good','$upall','$news','$newsurl','$html','$ubb','$time')");
zeroleonhart 2006-08-03
  • 打赏
  • 举报
回复
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.

21,889

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧