mysql查询中未定义的索引错误

时间:2013-11-10 06:32:47

标签: php mysql

<?php
  $conn=mysql_connect("localhost","root","")
  or die("cannot connect");
    $db=mysql_select_db("ticket",$conn)
    or die("no db");
    if (isset($_POST['submit']))
    {
    $name1=$_POST['name'];
    $phone1=$_POST['phone'];
    $email1=$_POST['email'];
    $pass1=$_POST['password'];
    }
  $query="insert into register(name,phone,email,pass) values ('$name1','$phone1','$email1','$pass1')";
  $result=mysql_query($query)
  or die("Error in pushing".mysql_error());
  mysql_close($conn);
  ?>

错误

  

注意:未定义的变量:C中的name1:\ xampp \ htdocs \ selva \ jqsty.php   在第13行上   注意:未定义的变量:C:\ xampp \ htdocs \ selva \ jqsty.php中的phone1   在第13行上   注意:未定义的变量:C:\ xampp \ htdocs \ selva \ jqsty.php中的email1   在第13行上   注意:未定义的变量:C:\ xampp \ htdocs \ selva \ jqsty.php中的pass1   第13行

4 个答案:

答案 0 :(得分:1)

除非发布表单,否则其中的变量将永远不会有值:

  $query="insert into register(name,phone,email,pass) values ('$name1','$phone1','$email1','$pass1')";

如果您需要等待POST执行查询,请将该代码放入if

$conn = mysql_connect("localhost","root","");

if(!$conn)
    die("cannot connect");

$db = mysql_select_db("ticket",$conn);

if(!$db)
    die("no db");

if(isset($_POST['submit']))
{
    $name1 = $_POST['name'];
    $phone1 = $_POST['phone'];
    $email1 = $_POST['email'];
    $pass1 = $_POST['password'];

    $query = "insert into register(name,phone,email,pass) values ('$name1','$phone1','$email1','$pass1')";
    $result = mysql_query($query);

    if(!$result)
        die("Error in pushing".mysql_error());
}

mysql_close($conn);

答案 1 :(得分:1)

我认为问题是你没有进入if循环,因为你没有名为的提交按钮: 试试这个

<input type="submit" class="submit1" value="Submit" name="submit"/>

答案 2 :(得分:0)

您正在检查是否存在$_POST['submit'],并设置了一些变量(如果已找到)。然后,您将在条件块之外执行mysql查询,因此如果找不到$ _POST变量,则会出现undefined variable错误。

尝试

<?php
  $conn=mysql_connect("localhost","root","")
  or die("cannot connect");
    $db=mysql_select_db("ticket",$conn)
    or die("no db");
    if (isset($_POST['submit']))
    {
    $name1=$_POST['name'];
    $phone1=$_POST['phone'];
    $email1=$_POST['email'];
    $pass1=$_POST['password'];
    // This code now inside if block
    $query="insert into register(name,phone,email,pass) values ('$name1','$phone1','$email1','$pass1')";
    $result=mysql_query($query)
      or die("Error in pushing".mysql_error());
    mysql_close($conn);
  }
  ?>

答案 3 :(得分:0)

将mysql查询放在if语句花括号中,如下所示:

if(isset($_POST['submit'])) {
$name1=$_POST['name'];
$phone1=$_POST['phone'];
$email1=$_POST['email'];
$pass1=$_POST['password'];
$query="INSERT INTO `register`(`name`,`phone`,`email`,`pass`) VALUES('$name1','$phone1','$email1','$pass1')";
$result=mysql_query($query) or die("Error in pushing".mysql_error());
mysql_close($conn);
}
?>

当表单未被提交时,您的变量未定义,您正在使用它们查询数据库。因此,您将所有内容放在if语句中,以便只有在提交表单时才会执行查询。另外你很容易受到mysql注入,使用mysql_real_escape_string函数或使用mysqli预编译语句。