【问题标题】:I am trying to insert html form data in database through php but it's not happening我正在尝试通过 php 在数据库中插入 html 表单数据,但它没有发生
【发布时间】: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

标签: php html mysql mysqli forms


【解决方案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 不是必需的。
猜你喜欢
  • 2018-11-13
  • 2022-01-15
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 2014-12-19
  • 2021-09-21
相关资源
最近更新 更多