我正在尝试通过 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
那么会发生什么,什么都没有显示?你能把else
s 放在你的条件上看看是否有任何一个失败吗?
是的,你是对的,当我按下“提交按钮”时没有显示任何内容,当我放置 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();
【讨论】:
我试过这个<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>
。但它仍然没有在数据库中插入数据@Shibon
把这个 echo "reached"; 在 if 块里面它说“到达”@Shibon
action
不是必需的。以上是关于我正在尝试通过 php 在数据库中插入 html 表单数据,但它没有发生的主要内容,如果未能解决你的问题,请参考以下文章
正在使用 PHP 通过 HTML 表单插入 MySQL,但数据不可搜索