<?
include("coon.php");
 if($_POST[submit])
  {
   $sql="insert into message values('','$_POST[name]','$_POST[title]'," .
  "'$_POST[content]',now())";
    mysql_query($sql) or die ("sas");
  }
  //else echo "失败";
?>
     <form action ="liuyan.php" method="POST">
姓名:<input type ="text" size=10 name="name"/><br>
标题:<input type ="text"  size=20 name="title"/><br>
内容:<input type ="text" size=30 name="content"/><br>
     <input type ="submit" name="submit" value="提交留言"/>    </form>
各位看官看看,上面这个简单留言本是正确的,能成功运行,但是书上的例子是在$_POST['submit']是加了引号的,也能正常运行
但是在写sql语句的时候我写出这样 $sql="insert into message values('','$_POST[‘name’]','$_POST[‘title’]'," .
  "'$_POST[‘content’]',now())"
我把$POST数组的值全加了引号,就会报错,是什么原因呢,我记得看过一篇文章,作者说是要加引号的,不加的话会把传过来的变量先当做常量,如果找不到该常量,再把值作为字符串,但是我放到sql句子中怎么会报错呢,什么时候该加引号,什么时候不该加呢。。这个问题快让我崩溃了。。

解决方案 »

  1.   

    $sql="insert into message values('$_POST[‘name’]','$_POST[‘title’]'," . 
    "'$_POST[‘content’]',now())" ;
    如果你的id主键是自增长的,就不要加在sql语句里面了。另外这个句尾你没有分号,不知道是不是忘了?
    你这个问题不是问过了么?
      

  2.   

    BTW,你输出$sql看看:$sql="insert into message values('$_POST[‘name’]','$_POST[‘title’]'," . 
    "'$_POST[‘content’]',now())" ;
    echo $sql;
      

  3.   

    分号是我忘了,我想问的是
    第一个:
    sql="insert into message values('','$_POST[name]','$_POST[title]'," . 
    "'$_POST[content]',now())"; 
    第二个:
     $sql="insert into message values('$_POST[‘name’]','$_POST[‘title’]'," . 
    "'$_POST[‘content’]',now())" ; 
    为什么第一个对,第二个错,而在判断的时候  if($_POST[submit])这个和if($_POST[‘submit’])
    为什么又都对
      

  4.   

    等等,你的逗号是中文的?$sql="insert into message values('$_POST['name']','$_POST['title']'," . 
    "'$_POST['content']',now())" ;
    echo $sql;
      

  5.   

    如果都加引号的时候输出结果为insert into message values('','','',now()) 
    确实是没传过值来,但是上面的判断 if中的$_POST[submit]何$_POST['sumit']为什么都能执行呢
    在sql句子中加引号为什么传不过变量的值
      

  6.   

    在双引号中就不需要,这是php的约定。
    问什么要这样做,可以不必管他
    至少看上去舒服些