如何使用PHP MySQL插入记录?

时间:2012-01-30 16:53:25

标签: php mysql

我创建了数据库(my_db)和表(人),其中我使用了FirstName,LastName和Age三个字段。 我在php脚本下运行它显示错误:

(!)注意:未定义的索引:第5行的C:\ wamp \ www \ insert.php中的FirstName 调用堆栈

时间记忆功能位置

1 0.0007 369800 {main}().. \ insert.php:0

(!)注意:未定义的索引:第6行的C:\ wamp \ www \ insert.php中的LastName 调用堆栈

时间记忆功能位置

1 0.0007 369800 {main}().. \ insert.php:0

(!)注意:未定义的索引:第7行的C:\ wamp \ www \ insert.php中的年龄 调用堆栈

时间记忆功能位置

1 0.0007 369800 {main}().. \ insert.php:0 记录添加到数据库

以下是PHP代码:PLS帮助我并提前感谢

  <html>
 <body>

   <?php
  $first=$_POST ['FirstName']; 
  $last=$_POST ['LastName'];
  $a=$_POST ['Age'];

  $user_name = "root";
  $password = "";
  $database = "my_db";
  $server = "127.0.0.1";
  $db_handle = mysql_connect($server, $user_name, $password);

  $db_found = mysql_select_db($database, $db_handle);

  if ($db_found) {

  $SQL = "INSERT INTO persons(FirstName, LastName, Age) VALUES     ('$first', '$last', '$a')";

     $result = mysql_query($SQL);

     mysql_close($db_handle);

     print "Records added to the database";
    }
    else 
      {
        print "Database NOT Found ";
     mysql_close($db_handle);
     }

     ?>

    AND HTML FORM IS BELOW:

     <html>
       <body>
        <form action="insert.php" mehtod="POST">
          First Name: <input type="text" name="FirstName">
          <br />
          Last Name:<input type="text" name="LastName">
          <br />
          Age:<input type="text" name="Age">
          <br />
         <input type="submit" value="ADD" />
       </form>  
      </body>
     </html>

5 个答案:

答案 0 :(得分:2)

很可能未设置$_POST - 变量。

试试......

var_dump($_POST);

......而不是......

$first=$_POST['FirstName']; 
$last=$_POST['LastName'];
$a=$_POST['Age'];

...调试,如果您要查找的值存储在那里(请删除$_POST和标识符之间的空格,请!)。

不是你的问题,但是如果你INSERT这些变量而不首先清理它们,那就开启了SQL注入的任何可能性。正确消毒它们以应对这种风险。

答案 1 :(得分:1)

您已在

中使用 mehtod
<Form mehtod="post">

而不是

<Form method="post">

答案 2 :(得分:0)

您确定要使用POST而不是GET提交表单吗?

尝试添加转储以查看您获得的内容

<?php
  var_dump($_POST);
  var_dump($_GET);

  //Anyway you can use $_REQUEST instead of $_POST or $_GET
  $first= $_REQUEST['FirstName']; 
  $last= $_REQUEST['LastName'];

答案 3 :(得分:0)

试试这个:

    if ($db_found) {

    $SQL = sprintf("
        INSERT INTO persons 
            (FirstName, LastName, Age) 
        VALUES ('%s', '%s', '%s')",
        mysql_real_escape_string($first), 
        mysql_real_escape_string($last), 
        mysql_real_escape_string($a));

    $result = mysql_query($SQL);
    if( $result == true ){
        print "Records added to the database";
    }

    mysql_close($db_handle);
}

它无法正常工作的原因是你没有在任何地方调用你的$ result,你只是声明了它。

此外,我将您的查询放入sprintf()函数,这意味着您可以更轻松地查看传递的数据。

另一件事是,您要检查受影响的行是否为&gt; 0表示已插入某些内容。

答案 4 :(得分:0)

您看到的“错误”实际上是通知。它们之所以发生是因为您正在尝试访问不存在的数组索引。

当您尝试从$ _POST中获取值时,它们不存在,并且会生成通知。

可以turn these notices off,但你不应该这样做。相反,您应该使用AND SANITIZE IT FOR GOODNESS' SAKEisset检查以确保输入有效(empty!)。

显示错误的原因很难猜测,因为您没有包含用于发布数据的HTML。但最有可能的是,你错误地命名变量或通过GET而不是POST发送它们。