【问题标题】:MYSQL database not showing inserted data from HTML formMYSQL 数据库未显示来自 HTML 表单的插入数据
【发布时间】:2016-09-02 13:49:52
【问题描述】:

我对 PHP 还很陌生,我在 youtube 上学习了一个简单的教程,我按照 youtube 视频进行了两次和三次检查,以确保我输入的所有内容都是正确的,并且仍然没有插入数据。

我在互联网上搜索了几个小时,我想出了一个修复方法,但我认为这不是正确的方法

HTML

<html>
<head>

<title>Insert Form Data In MYSQL Database Using PHP</title>
</head>
<body>

<form action="insert.php" method="post">

    Name : <input type="text" name="username">
            <br/>
    Email : <input type="text" name="email">
            <br/>
    <input type="submit" value="Insert">
</form>
</body>
</html>

PHP

<?php

$con = mysqli_connect('localhost','root','');

if (!$con) {
    echo 'Not Connected To Server';
}

if (!mysqli_select_db($con,'tutorial')) {
    echo 'Database Not Selected';
}

if (isset($_POST['username'])){
    $Name = $_POST['username'];
}

if (isset($_POST['email'])){
    $Email = $_POST['email'];
}

$sql = "INSERT INTO person (Name, Email) VALUES ('John', 'john@gmail.com')";


if (!mysqli_query($con,$sql)) {
    echo 'Not Inserted';
} else {
    echo 'Inserted Successfully!';
}
header("refresh:10; url=index.html");
?>

我用 John 和 john@gmail.com 替换了 '$Name' 和 '$Email',然后我将其输入到 html 表单中,数据正确地进入了数据库。

然后我在网上找到了另一个带有更多 PHP 的 HTML 表单,但它做同样的事情(不向数据库插入任何数据)

HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Record Form</title>
</head>
<body>
<form action="insert1.php" method="post">
    <p>
        <label for="firstName">First Name:</label>
        <input type="text" name="firstname" id="firstName">
    </p>
    <p>
        <label for="lastName">Last Name:</label>
        <input type="text" name="lastname" id="lastName">
    </p>
    <p>
        <label for="emailAddress">Email Address:</label>
        <input type="text" name="email" id="emailAddress">
    </p>
    <input type="submit" value="Submit">
</form>
</body>
</html>

PHP

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "", "demo");

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Escape user inputs for security
$first_name = mysqli_real_escape_string($link, $_POST['firstname']);
$last_name = mysqli_real_escape_string($link, $_POST['lastname']);
$email_address = mysqli_real_escape_string($link, $_POST['email']);

// attempt insert query execution
$sql = "INSERT INTO persons (first_name, last_name, email_address) VALUES ('$first_name', '$last_name', '$email_address')";
if(mysqli_query($link, $sql)){
    echo "Records added successfully.";
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

// close connection
mysqli_close($link);
?>

字段为空白,任何帮助将不胜感激!

顺便说一句,这就是我正在使用 xampp 服务器的字段显示方式。

【问题讨论】:

  • 一个很好的测试方法是回显变量来检查你的进度。例如,回声 $first_name 。 “”。 $姓氏。 “”。 $电子邮件地址;在它们被声明后,并 echo $sql;创建后。你得到你所期望的了吗?
  • 那么你从这些代码中得到了什么信息
  • 我注意到它们都连接到不同的数据库。您是否有一个名为 tutorial 的数据库和/或一个名为 demo 的数据库
  • mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 添加到脚本的顶部。这将强制任何mysqli_ 错误生成一个您不能错过或忽略的异常。
  • 注意:未定义索引:第 12 行 C:\xampp\htdocs\search\insert1.php 中的名字 注意:未定义索引:C:\xampp\htdocs\search\insert1.php 中的姓氏第 13 行注意:未定义索引:第 14 行记录添加成功的 C:\xampp\htdocs\search\insert1.php 中的电子邮件。编辑,是的,我正在测试 2 个不同的数据库。

标签: php html mysql


【解决方案1】:

我使用了下面的代码,它对我来说很好。

  <?php

     $link = mysqli_connect("localhost", "root", "", "dummy");

      // Check connection
     if($link === false){
     die("ERROR: Could not connect. " . mysqli_connect_error());
     }

 /* Collect below values from $_POST
 $firstname = 'John';
 $lastname = 'Doe';
 $email = 'test@gmail.com';
 */
   // Escape user inputs for security
  $first_name = mysqli_real_escape_string($link, $firstname);
  $last_name = mysqli_real_escape_string($link, $lastname);
  $email_address = mysqli_real_escape_string($link, $email);

  // attempt insert query execution
     $sql = "INSERT INTO accounts (account_firstname, account_lastname, account_email) VALUES ('$first_name', '$last_name', '$email_address')";
   if(mysqli_query($link, $sql)){
       echo "Records added successfully.";
     } else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
   }

    // close connection
     mysqli_close($link);
     ?>

【讨论】:

  • 我在demo中使用的Accounts表,请使用你的表名和列名。
  • 仍然空白.. 注意:未定义变量:第 16 行 C:\xampp\htdocs\search\insert1.php 中的名字 注意:未定义变量:C:\xampp\htdocs\search\ 中的姓氏第 17 行的 insert1.php 注意:未定义的变量:C:\xampp\htdocs\search\insert1.php 中的电子邮件第 18 行记录添加成功。
  • 没关系,我现在可以使用它,但是对于每个名称,我必须先将名称和电子邮件输入到 php 代码中,然后通过 html 表单提交,我认为会有一个简单的方法仅使用 html 表单将数据插入数据库,但谢谢。
  • 所以我发现我的 .HTACCESS 文件是导致数据库中表中的空白字段的原因,我用它从文件中删除了 .php 扩展名,但是在从我的网络中删除了 htaccess 文件之后目录可以正常工作,只需要发布它以防将来对其他人有帮助。
猜你喜欢
  • 2014-06-21
  • 2016-07-23
  • 2019-01-12
  • 1970-01-01
  • 2017-10-20
  • 2014-04-04
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
相关资源
最近更新 更多