表单页面 index.php<html>
<body>
<FORM METHOD=POST ACTION="read.php">
<tr><td>
id:<INPUT TYPE="text" NAME="userid" id=userid>
</td></tr>
<tr><td>
name:<INPUT TYPE="text" NAME="username" id=username>
<INPUT TYPE="submit"><INPUT TYPE="reset">
</td></tr>
</table>
</FORM>
</body>
</html>read.php 数据读出页面<html>
<body>
<?php$dbh = @mysql_connect("localhost:3306","root","198415");
if(!$dbh){die("error");}
@mysql_select_db("dl_db", $dbh);
$exec2="INSERT INTO `dl_file` ( `id` , `name` , `url` , `count` ) VALUES ('$_POST[userid]', '$_POST[username]', 'ddfgdfd.rar', '0')";
//$exec2 = "DELETE FROM `dl_file` WHERE CONVERT(`count` USING utf8) = '0' ";
$q = "SELECT * FROM dl_file";/* 定义变量q, "SELECT * FROM abc"是一个SQL语句,意思是读取表abc中的数据 */?>
<?php
@mysql_query($exec2, $dbh);
$rs = mysql_query($q, $dbh);while($row = mysql_fetch_object($rs)) echo $row->id . $row->name. "<br />";
?>
<?@mysql_close($dbh);/* 关闭到mysql数据库的连接 */?>
</body>
</html>
我想要问的是为什么"INSERT INTO `dl_file` ( `id` , `name` , `url` , `count` ) VALUES ('$_POST[userid]', '$_POST[username]', 'ddfgdfd.rar', '0')";
这句中$_POST[userid]userid没有加引号?不加引号我很难理解啊。

解决方案 »

  1.   

    一般而言,字符串需要引号
    在mysql中,除数字之外都要必须加引号,数字也可以加引号
      

  2.   

    不知道该怎么说 反正加不加都可以取到值应该始终在用字符串表示的数组索引上加上引号。例如用 $foo['bar'] 而不是 $foo[bar]。但是为什么 $foo[bar] 错了呢?可能在老的脚本中见过如下语法: 
    <?php
    $foo[bar] = 'enemy';
    echo $foo[bar];
    // etc
    ?>  
    这样是错的,但可以正常运行。那么为什么错了呢?原因是此代码中有一个未定义的常量(bar)而不是字符串('bar'-注意引号),而 PHP 可能会在以后定义此常量,不幸的是你的代码中有同样的名字。它能运行,是因为 PHP 自动将裸字符串(没有引号的字符串且不对应于任何已知符号)转换成一个其值为该裸字符串的正常字符串。例如,如果没有常量定义为 bar,PHP 将把它替代为 'bar' 并使用之。 注: 这并不意味着总是给键名加上引号。用不着给键名为常量或变量的加上引号,否则会使 PHP 不能解析它们。 
      

  3.   

    变量加"",字符串加'',$_POST[username]这种不加也可以执行,但是写法不标准。还是按标准走吧
      

  4.   

    就你上面那一句insrt 不管加双引还是单引 都会把整句字符串截断了 所以报错
      

  5.   

    <html>
    <body><form action="insert.php" method="post">
    Firstname: <input type="text" name="firstname" />
    Lastname: <input type="text" name="lastname" />
    Age: <input type="text" name="age" />
    <input type="submit" />
    </form></body>
    </html>
    insert.php
    <?php
    $con = mysql_connect("localhost","peter","abc123");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }mysql_select_db("my_db", $con);$sql="INSERT INTO person (FirstName, LastName, Age)
    VALUES
    ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";if (!mysql_query($sql,$con))
      {
      die('Error: ' . mysql_error());
      }
    echo "1 record added";mysql_close($con)
    ?>
    你在看一下这个例子,这是我从书上找到的源代码,应该没有什么错误吧,还是没有加引号啊,我就是实验的这个例子,如果加上引号的话,就报错。