繁体   English   中英

如何使用PHP MySQL插入记录?

[英]How to insert record using PHP MySQL?

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

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

时间记忆功能位置

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>

您很有可能未设置$_POST变量。

试试...

var_dump($_POST);

...代替...

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

...进行调试,如果您要查找的值存储在其中(请也除去$_POST和标识符之间的空间!)。

这不是您的问题,但是如果您要INSERT这些变量而不先对其进行清理,那么将为SQL注入打开任何可能性。 适当地消毒它们以应对这种风险。

您已在其中使用Mehtod

<Form mehtod="post">

代替

<Form method="post">

您确定要使用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'];

尝试这个:

    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()函数,这意味着更容易查看要传递的数据。

另一件事是,您要检查受影响的行是否大于0,因为这意味着已插入某些内容。

您看到的“错误”实际上是通知。 发生这些错误是因为您尝试访问不存在的数组索引。

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

可以关闭这些通知 ,但您不可以。 相反,您应该使用issetempty检查输入是否有效( 并且对它进行良好的清酒 !)。

显示错误的原因很难猜测,因为您还没有包括用于发布数据的HTML。 但是最有可能的是,您将变量命名错误或通过GET(而不是POST)发送了变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM