PHP错误。未插入数据

时间:2015-12-09 07:45:50

标签: php web

我正在关注一些视频教程。但每当我运行代码时,它会显示此错误。 在数据库中,我的数据库名称是phplogin,我的表名是users。我的列名是id,用户名,密码和名称。 erorr显示的是:

     Parse error: syntax error, unexpected ''".$_POST['' (T_CONSTANT_ENCAPSED_STRING) in C:\xampp1\htdocs\firstlogin\regiser.php on line 8

代码在。        

include_once ("db/phplogin");
if(isset($_POST['submit']));
{
    $query = "insert into users(username,password,name) values ("'".$_POST['username']."','".$_POST['password']."','".$_POST['name']."'")";
    if(mysql_query($query))
    {
        echo "data inserted";

    }
    else
    {
        echo "data not inserted";
    }
}


   ?>
  <html>
  <head>
  </head>
  <body>
  <form action='regiser.php' method='POST'>
   Name:<input type ='text' name='Name' placeholder='Name'><br>
   Username:<input type ='text' name='Username' placeholder='Username'><br>
   Password:<input type ='password' name='Password' placeholder='Password'>            <br>
  <input type='submit' name='submit' value='Register'>
  </form>
  </body>
  </html>

4 个答案:

答案 0 :(得分:2)

更改此行:

$query = "insert into users(username,password,name) values ('".$_POST['username']."','".$_POST['password']."','".$_POST['name']."')";

但是,这很危险。添加此行以清除输入,然后将其保存在数据库中:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $input = array_map('mysqli_real_escape_string', $_POST);

    $query = "insert into users(username,password,name) values ('".$input['username']."','".$input['password']."','".$input['name']."')";

}

更好的方法是使用具有结合参数的PDO。它是安全的,它为未来做好了准备(您使用已弃用的mysql_query()):

更新:使用小写表单字段名称更容易,因为PHP通常区分大小写(取决于底层操作系统)。见How can I make my local server case-sensitive?

答案 1 :(得分:1)

更新代码(错误如下所列)

<?
include_once ("db/phplogin.php");
if(isset($_POST['submit']));
{
  $query = "insert into users(username,password,name) values ('".$_POST['Username']."','".$_POST['Password']."','".$_POST['Name']."')";
  if(mysql_query($query)) {
      echo "data inserted";
  } else {
      echo "data not inserted";
  }
}
?>

因为你在@William Madede的答案中说了这个错误。

  

警告:include_once(db / phplogin):无法打开流:没有这样的   第5行的C:\ xampp1 \ htdocs \ firstlogin \ regiser.php中的文件或目录

     

警告:include_once():无法打开'db / phplogin'以包含它   (include_path ='。; C:\ xampp1 \ php \ PEAR')in   第5行的C:\ xampp1 \ htdocs \ firstlogin \ regiser.php

     

注意:未定义   index:第8行的C:\ xampp1 \ htdocs \ firstlogin \ regiser.php中的用户名

     

注意:未定义的索引:密码在   第8行的C:\ xampp1 \ htdocs \ firstlogin \ regiser.php

     

注意:未定义的索引:第8行的C:\ xampp1 \ htdocs \ firstlogin \ regiser.php中的名称

<强>误

  1. 将此$_POST['username']更改为$_POST['Username']
  2. 将此$_POST['password']更改为$_POST['Password']
  3. 将此$_POST['name']更改为$_POST['Name']
  4. 删除$query
  5. 中不必要的双引号
  6. db/phplogin更改为db/phplogin.php或提供phplogin.php
  7. 的相应路径

    [注意:Mysql已弃用。而是使用mysqliPDO]

答案 2 :(得分:0)

因为不必要的双引号...... 更新

$query = "insert into users(username,password,name) values ("'".$_POST['username']."','".$_POST['password']."','".$_POST['name']."'")";

$query = "insert into users(username,password,name) values ('".$_POST['username']."','".$_POST['password']."','".$_POST['name']."')";

答案 3 :(得分:0)

您还可以使用插入查询,如下所示:

if(isset($_POST['submit']));
{
    $u = $_POST['Username'];
    $p = $_POST['Password'];
    $n = $_POST['Name'];
    $query = "insert into users(username,password,name) values ('$u','$p','$n')";
    if(mysql_query($query))
    {
        echo "data inserted";

    }
    else
    {
        echo "data not inserted";
    }
}