使用 php 将表单数据发送到 mysqli dtbs 失败(xampp 环境)

Posted

技术标签:

【中文标题】使用 php 将表单数据发送到 mysqli dtbs 失败(xampp 环境)【英文标题】:Send Form Data to mysqli dtbs using php fails (xampp environment) 【发布时间】:2018-01-06 19:24:44 【问题描述】:

这是我的 html 表单代码:问题是我不知道如何使用 xampp 成功地将表单提交到 mysql dtbs。 (数据不会发送到 dtbs)。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>My Form</title>
    <meta name="description" content="An interactive form">
    </head>

    <body>

    <form action="test.php" method="post" id="Personalinfo">

    <label for="fname">Όνομα:</label>
    <input type="text" id="fname" name="firstname" placeholder="Όνομα 
    Πελάτη..">

    <input type="submit" value="Submit">

    </body>
    </html>

现在是我的 php 代码:

    <?php
    $servername = "localhost";
    $username = "username";
    $password = "";
    $dbname = "mydb";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
   // Check connection
   if ($conn->connect_error) 
   die("Connection failed: " . $conn->connect_error);
    

   $sql = "INSERT INTO Guests (firstname)
   VALUES ('?')";

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

   $conn->close();
   ?>

mysql dtbs 中没有发送数据!我已经尝试了 2 天来解决这个问题,但什么都没有......请帮忙!

亲切的问候,灭霸

【问题讨论】:

【参考方案1】:
       <!DOCTYPE html>
            <html>
            <head>
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <title>My Form</title>
            <meta name="description" content="An interactive form">
            </head>

            <body>

            <form action="test.php" method="post" id="Personalinfo">

            <label for="fname">Όνομα:</label>
            <input type="text" id="fname" name="firstname" placeholder="Όνομα 
            Πελάτη..">

            <input type="submit" name="submitForm" value="Submit">

            </body>
            </html> 
    **test.php file**
    <?php
        $servername = "localhost";
        $username = "root";
        $password = "";
        $dbname = "mydb";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
       // Check connection
       if ($conn->connect_error) 
       die("Connection failed: " . $conn->connect_error);
        

    if(isset($_POST['submitForm']))
    $firstname = $_POST['firstname'];
       $sql = "INSERT INTO Guests (firstname)
       VALUES ('$firstname')";

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

    else
echo "Are you sure you enter a firstname and the name of your html submit is submitForm";


       $conn->close();
       ?>

【讨论】:

非常感谢您的帮助!不幸的是,我在提交时收到了这条消息:“警告:mysqli::__construct(): (HY000/1044): Access denied for user ''@'localhost' to database 'mydb' in C:\xampp\htdocs\NutriWebSolutions第 8 行的 \test.php 连接失败:用户 ''@'localhost' 拒绝访问数据库 'mydb'"。 哦..,$username 是 root 我已经编辑了我的代码,将数据库用户名更改为 root,我之前没有注意到你错过了。现在将授予访问权限 再次感谢您的帮助!我没有投反对票,其他人必须...现在我提交了我的表格,一个空白页面没有出现错误,但数据仍未传输到 dtbs :( 好,现在这意味着提交代码块没有被执行,让我们试试else语句..再次检查代码..我只是添加一个更新【参考方案2】:
$sql = "INSERT INTO Guests (firstname) VALUES ('?')";

'?'是替换为整数、字符串、双精度或 blob 值。

您放置了“?”,但忘记使用bind_param 准备它。更重要的是,您必须将$firstname 值传递给$stmt-&gt;bind_param("s", $firstname);

更新代码

$firstname = $_POST['firstname'];
$sql = $conn->prepare("INSERT INTO Guests (firstname) VALUES (?)");
$sql->bind_param("s", $firstname);

if ($sql->execute() === TRUE) 

阅读

    Prepared Statements in MySQLi

    how to insert into mysql using Prepared Statement with php

【讨论】:

以上是关于使用 php 将表单数据发送到 mysqli dtbs 失败(xampp 环境)的主要内容,如果未能解决你的问题,请参考以下文章

从表单输入多行时缺少或未对齐的值 - PHP/MYSQLI

使用 PHP 将我的表单数据添加到数据库

PHP:将表单数据发送到 php 脚本,然后将数据发布到另一个表单处理器,如 zapier.com?

使用 jquery AJAX 将数据发送到 php 并检索响应

php表单未将日期发送到数据库SQL

尝试使用注册表单中的 PHP/Html 将数据输入 SQL 表