【问题标题】:Php form data won't insert data on my PhpMyAdmin databasePhp 表单数据不会在我的 PhpMyAdmin 数据库中插入数据
【发布时间】:2018-05-14 05:44:26
【问题描述】:

我一直在尝试解决这个问题,但我看不到错误。请帮我。到目前为止,这是我的代码。我该怎么办?我检查了每个细节,但找不到。当我单击按钮时,没有错误,它会在reservation.php 页面中返回。我的数据库中还有一个“res_id”,它是自动递增的。我应该如何将它包含在插入语句中?

php代码:

<?

$conn = mysqli_connect("localhost","root","") or die(mysql_error());
mysqli_select_db("hoteldb",$hoteldb) or die("no db found");

if(isset($_POST['confirm'])){
    $fname= $_POST['fname'];
    $lname= $_POST['lname'];
    $contact= $_POST['contact'];
    $username= $_POST['username'];
    $password= $_POST['password'];
    $email= $_POST['email'];
    $address= $_POST['address'];
    $checkin= $_POST['checkin'];
    $checkout= $_POST['checkout'];

    $query="INSERT INTO reservation(fname,lname,contact,username,password,email,address,checkin,checkout)
    VALUES ('$fname','$lname','$contact','$username','$password','$email','$address','$checkin','$checkout')";

    mysql_query($query,$conn);
    mysqli_close($conn);
}
?>

HTML代码:

 <form action="reservation.php" method="post">
                        <div>
                            <label>Title:</label>
                            <select name="title">
                                <option value="ms">Ms.</option>
                                <option value="mr">Mr.</option>
                                <option value="mrs">Mrs.</option>
                                </select>    

                        </div>
                        <div >
                            <label>First Name:</label>
                            <input type="text" name="fname">
                        </div> 
                        <div>
                           <label>Last Name:</label>
                           <input type="text" name="lname">
                        </div>
                        <div>
                            <label>Phone Number:</label>
                            <input type="text" name="contact">
                         </div>
                        <div>
                            <label>Username:</label>
                            <input type="text" name="username" >
                        </div>
                        <div >
                            <label>Password:</label>
                            <input type="password" name="password" >
                        </div>
                        <div >
                            <label>Email Address:</label>
                            <input type="text" name="email" >
                        </div>
                        <hr>
                        <h5>Address</h5>
                            <div >
                                <label>Full Address:</label>
                                <input type="text" name="address" >
                            </div>
                        <hr>
                        <h5>Date</h5>
                        <div >
                            <legend>Check-in</legend> 
                            <input type="date" name="checkin"> 

                            <legend>Checkout </legend> 
                            <input type="date" name="checkout">
                        </div>
                        <input type="submit" name="confirm">
                    </form>

还是因为日期选择器?如果是这样,你能教我如何使用日期选择器吗?这是我第一次使用它。谢谢! :)

【问题讨论】:

  • 不要将mysql_*mysqli_* 混用。你需要阅读 sql injection。
  • @jeroen 在我的 mysql_query 中添加了字母“i”,但它仍然没有将数据插入数据库。解决此问题后,我将编辑用于 sql 注入的代码。谢谢。
  • 如果任何值中有',查询就会中断,除了SQLi问题,你为什么不用mysqli_error()调试呢,网上有很多教程。
  • 你应该从手册开始。
  • 您的出发点非常错误。在开始编码之前,您应该学习一些东西。这是一个很好的起点:phptherightway.com

标签: php mysql phpmyadmin


【解决方案1】:

尝试获取错误描述:(添加在$query的定义之后)

if (!mysqli_query($conn, $query)) {
  echo("Error description: " . mysqli_error($conn));
}

【讨论】:

    【解决方案2】:

    尝试打开 PHP 错误,而不是只得到一个空页面。

    http://php.net/manual/en/mysqli.query.php

    mysql_query($query, $conn);
    

    这应该是

    mysqli_query($conn, $query);
    

    我的数据库中还有一个“res_id”,它是自动递增的。我应该如何将它包含在插入语句中?

    由于它设置为“自动递增”,因此您无需对其进行任何操作

    另外,请尝试查看PDO,它更安全,使用的代码更少。

    【讨论】:

      【解决方案3】:

      当你连接到你使用 mysql 的数据库时,在这之后你试图使用 mysqli_query 插入数据,这是不可能的。你必须更换

      mysql_query($query,$conn);
      

      mysqli_query($conn, $query);
      

      所以你的 php 看起来像这样

      <?
      
      $conn = mysqli_connect("localhost","root","") or die(mysql_error());
      mysqli_select_db("hoteldb",$hoteldb) or die("no db found");
      
      if(isset($_POST['confirm'])){
          $fname= $_POST['fname'];
          $lname= $_POST['lname'];
          $contact= $_POST['contact'];
          $username= $_POST['username'];
          $password= $_POST['password'];
          $email= $_POST['email'];
          $address= $_POST['address'];
          $checkin= $_POST['checkin'];
          $checkout= $_POST['checkout'];
      
          $query="INSERT INTO reservation(fname,lname,contact,username,password,email,address,checkin,checkout)
          VALUES ('$fname','$lname','$contact','$username','$password','$email','$address','$checkin','$checkout')";
      
          mysqli_query($conn, $query);
          mysqli_close($conn);
      }
      ?>
      

      这是主要问题。

      您可以在需要在数据库中插入内容的任何时候使用此模板

      https://www.w3schools.com/php/php_mysql_insert.asp

      如果你想使用 mysqli 去 示例(MySQLi 程序)部分

      但我建议使用 PDO;

      【讨论】:

        【解决方案4】:

        Mysqli_select_db 语句中的错误。

        您需要更正您的陈述。

        mysqli_select_db("hoteldb",$hoteldb) or die("no db found");
        

        这个

        mysqli_select_db($conn,"hoteldb") or die("no db found");
        

        【讨论】:

          猜你喜欢
          • 2019-10-04
          • 1970-01-01
          • 1970-01-01
          • 2012-08-05
          • 1970-01-01
          • 2020-05-22
          • 2020-05-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多