我正在尝试通过 php 在数据库中插入 html 表单数据,但它没有发生

Posted

技术标签:

【中文标题】我正在尝试通过 php 在数据库中插入 html 表单数据,但它没有发生【英文标题】:I am trying to insert html form data in database through php but it's not happening 【发布时间】:2018-02-15 16:05:24 【问题描述】:

我正在尝试通过 php 在数据库中插入 html 表单数据。 我无法将 html 表单数据插入数据库,我不知道,我在代码中做错了什么?

这是我的代码:

<?php
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'mydb';
$con=mysqli_connect($host, $username, $password,$dbname);
if (!$con) 

    echo "connection failed";


if(isset($_POST['submit']))

 $name = $_POST['username'];
 $pass = $_POST['password'];
$sql="insert into mytable1 (name,password) VALUES ('$name', '$pass')";
    if(mysqli_query($con,$sql))
    
        echo "DATA IS INSERTED INTO DATABASE";
    

?>
<!DOCTYPE HTML>
<html>
    <head>
        <title>SignUpform.com</title>

    </head>
    <body>

        <div id="div1">
            <div id="div2">
                <h1>Sign up Form</h1>
            </div>
           <form action="" method="post">
            <fieldset>
                <legend>Signup form ceredentials</legend>
                 <p id="p1">Name:</p>    
                <input id="text1" type="text" placeholder="Enter username" name="username">
                 <p id="p2">Password:</p>
                <input id="pass1" type="password" placeholder="Enter Password" name="password">
                <p id="email">Email:</p>
                <input id="emailtextfld" type="text" placeholder="Enter Email" name="email">
                <p id="company">Company Name:</p>
                <input id="companytextfld" type="text" placeholder="Company name" name="company">
                <input id="donebtn" type="submit" value="submit" name="submit">

            </fieldset>
           </form> 
        </div>
    </body>
</html>

这是我的数据库

我的数据库表的结构:

【问题讨论】:

你收到DATA IS INSERTED INTO DATABASE了吗?你对 SQL 注入持开放态度,参数化你的查询。您的密码应该经过哈希处理。 不,我没有收到此消息“数据已插入数据库”@chris85 那么会发生什么,什么都没有显示?你能把elses 放在你的条件上看看是否有任何一个失败吗? 是的,你是对的,当我按下“提交按钮”时没有显示任何内容,当我放置 else 块时,我收到此错误消息“解析错误:语法错误,意外'',期待','要么 ';'在 C:\wamp64\www\html\phpfile.php 第 22 行“@chris85 对不起,我忘了放“;”在 else 块消息的末尾,这就是我收到该错误消息的原因。在放置 else 块后,我收到消息“数据未插入数据库”@chris85 【参考方案1】:

您应该从以下位置更改数据库的存储引擎:

ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8mb4;

ENGINE=innoDB DEFAULT CHARSET=utf8;

从我的角度来看,这只是因为“引擎错误”而发生的。所以在更改数据库的存储引擎后,我希望它对你有用。

【讨论】:

更改我的数据库的存储引擎后,它现在工作正常,现在数据库中插入数据的问题已经解决。@Shahab Khan【参考方案2】:
if(isset($_POST['submit']))

$name = $_POST['username'];
$pass = $_POST['password'];
$sql="insert into mytable1 (name,password) VALUES ('$name', '$pass')";

$query = mysqli_query($con, $sql);
if($query)

echo "<h4 style='color:green'>Inserted Successfully.</h4>";
    
    else
    
        echo "<h4 style='color:red'>Faild.</h4>";
    

?>

试试这个解决方案。

【讨论】:

我试过这个,但它说“失败”@Prakhar Sood 所以您的插入查询有问题。尝试回显用户名和密码的值,检查您是否甚至通过表单获取值。 是的,我已经回显了用户名和密码的值,它通过 html 表单 @Prakhar Sood 获取值【参考方案3】:

你需要像这样给出表单动作

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">

添加这个来检查连接

if (mysqli_connect_errno())

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  

【讨论】:

我试过这个&lt;?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?&gt;。但它仍然没有在数据库中插入数据@Shibon 把这个 echo "reached"; 在 if 块里面它说“到达”@Shibon action 不是必需的。

以上是关于我正在尝试通过 php 在数据库中插入 html 表单数据,但它没有发生的主要内容,如果未能解决你的问题,请参考以下文章

正在使用 PHP 通过 HTML 表单插入 MySQL,但数据不可搜索

PHP将数据插入SQL数据库表产生空白行

如何通过 PHP 将未知数量的 HTML 表单字段插入 MySQL?

使用 Ajax 和 PHP 插入数据库(mysql)

PHPFox:将封面图像插入所有网站页面

我需要使用 PHP 从 html/php 文件中删除动态信息