簡體   English   中英

將數據從HTML表單保存到MySQL數據庫時出錯

[英]Error in saving data from HTML form to MySQL database

在此,我創建了一個簡單的HTML表單,其中從HTML表單輸入的電子郵件和密碼未保存在MYSQL數據庫中! 我做了什么更改,以便可以將數據保存在MYSQL數據庫中。

這是我的HTML代碼:

<form style="position: relative;" action="pass.php" method="post" >


<div style="position: absolute; left: 107px; top: 130px; text-align: center; width: 450px;">

    <input type="email" name="email" style="border:none" size="45" placeholder="Email" /><br>

    <br>

    <input type="password" name="password" style="border:none" size="45" placeholder="Password" /><br /><br>


   <button type="submit" class="inbutton"></button>

</div>


 </form>

這是php代碼:

<?php
if( $_POST )
{
  $con = mysql_connect("mysqlhostname","username","password","databasename");

  if (!$con)
  {
    die('Could not connect: ' . mysql_error());
  }


  mysql_select_db("databasename", $con);

  $users_email = $_POST['email'];
  $users_password = $_POST['password'];



  $users_email = mysql_real_escape_string($users_email);
  $users_password = mysql_real_escape_string($users_password);





  $query = "INSERT INTO pass (`email`, `password`) VALUES ('$users_email', '$users_password');";

  mysql_query($query);  
  mysql_close($con);
}
  ?>

在HTML文件中:給出“提交”按鈕的name屬性

<html>
<body>
    <form style="position: relative;" action="pass.php" method="post" >
        <div style="position: absolute; left: 107px; top: 130px; text-align: center; width: 450px;">
        <input type="email" name="email" style="border:none" size="45" placeholder="Email" /><br>
        <br>
        <input type="password" name="password" style="border:none" size="45" placeholder="Password" /><br /><br>
        <button type="submit" class="inbutton" name="Save">Save</button>
        </div>
    </form>
</body>
</html>

這是php代碼:
在您的PHP文件中進行小的更改:pass.php

<?php
if( isset( $_POST['Save'] ) )
{
    $con = mysql_connect("mysqlhostname","username","password","databasename");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }
    mysql_select_db( "databasename", $con );
    $users_email    = $_POST['email'];
    $users_password = $_POST['password'];
    $users_email    = mysql_real_escape_string($users_email);
    $users_password = mysql_real_escape_string($users_password);
    $query = "INSERT INTO pass ( email, password ) VALUES ( '$users_email', '$users_password' )";
    mysql_query( $query, $con );  
    mysql_close($con);
} 
?>

在離線討論中,我們發現OP的代碼沒有進入外部if語句。 這是一些有關如何構造它的示例代碼

注意事項:

  • 給“提交”按鈕命名,然后在$_POST進行檢查
  • 使用PDO代替mysql API
  • 將所有內容包裝在try / catch塊中以查看任何錯誤

要跑。 祝好運!

<form action="pass.php" method="post" >
    <input type="email" name="email" size="45" placeholder="Email" />
    <br>
    <input type="password" name="password" size="45" placeholder="Password" />
    <br>
    <input type="submit" name="submit" value="Submit">
 </form>



/*****************************************/
/**************** pass.php ***************/
/*****************************************/
<?php
// Please use PDO instead of mysql because mysql is deprecated and officially removed as of PHP 7.
// Read about it here: https://phpdelusions.net/pdo
if(isset($_POST['submit'])) {
    // Wrap everything in a try/catch block so you can actually see the error.
    try {

        /*****************************************/
        /************* DB CONNECTION *************/
        /*****************************************/
        // Change this to match your DB credentials
        $host = '127.0.0.1';
        $db = 'test';
        $user = 'root';
        $pass = '';
        $charset = 'utf8mb4';

        $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
        $opt = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false,
        ];

        // This is your DB connection. Use it below.
        $pdo = new PDO($dsn, $user, $pass, $opt);


        /*****************************************/
        /************ FORM PROCESSING ************/
        /*****************************************/
        // Get values from form.
        // Do any validation you want here.
        $email = $_POST['email'];
        $password = $_POST['password'];



        /*****************************************/
        /*************** DB INSERT ***************/
        /*****************************************/
        $stmt = $pdo->prepare('INSERT INTO pass (email, password) VALUES (?, ?)');
        $stmt->execute(array(
            $email,
            $password
        ));

    /*****************************************/
    /*********** OUTPUT ANY ERRORS ***********/
    /*****************************************/
    } catch (Exception $e) {
        var_dump($e->getMessage());
    }
}

php文件if($_POST)應該是if( isset( $_POST ['Save'] ) )

<button type="submit" class="inbutton">應該是<button type="submit" class="inbutton" name="Save">

嘗試下面的PHP代碼

<?php
if( isset( $_POST['Save'] ) )
{
$servername = "mysqlhostname"; //localhost or your server name
$username = "username";        //root or your username
$password = "password";        //password or server hasn't password it should be `$password = "";`
$dbname = "databasename";      //your database name

// Create connection
$con = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($con->connect_error) {
   die("Could not connect: " . $con->connect_error);
} 
$users_email    = $_POST['email'];
$users_password = $_POST['password'];

$sql = "INSERT INTO pass (email, password) VALUES ('$users_email', '$users_password')";

if ($con->query($sql) === TRUE) {
   echo "New record created successfully";
} else {
   echo "Error: " . $sql . "<br>" . $conn->error;
}

$con->close();
}

?>

我有結果

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM