php中的$_post[],[]内应该是有双引号或者单引号的,为什么下面这句话,加引号出错,什么都不加反而正确呢

$sql = "insert into message(username,email,content) values($_POST[user],$_POST[email],$_POST[content])";

因为你的sql是在双引号里面的字符串,如果你加了双引号,语句没到最后就被中断了。双引号内可以放心用单引号,单引号内可以放心用双引号。写$_POST[user]也可以,不过推荐$_POST[‘user’]。追问

加了单引号报错,什么都不加反而没问题,有点搞不懂

追答

$sql = "insert into message(username,email,content) values(".$_POST["user"].",".$_POST["email"]".","$_POST["content"].")";

请向上面这样,用拼接字符串加变量再加字符串的方式来组建一个完整的sql去执行。

追问

这样写是严谨一点

追答

把浏览器post来的数据不加过滤直接插入到表中,是个欠妥的行为,可以用trim删除多余的空格,最好还能变量做个防SQL注入,这样安全些。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-10

你好,如果是执行Sql语句的话,请先把$_POST的值都附给数组或者变量

$sql = "insert into message(username,email,content) values($user,$email,$_content)";

这种数组函数只要是字符串都要加上引号,没引号就是常量了!但在php执行sql,引号就会无法插入数值

追问

你这个方法不错