php - Mysql数据库插入“空白”数据而不是用户通过php连接输入的实际数据
问题描述
我正在通过 php 练习一些关于 MySQL 数据库连接的知识。但是,我遇到了一些问题。由于插入了用户输入到 MySQL 数据库本身的实际用户名和密码,因此只有空白行或包含空(ps。它不是 NULL,只是空)数据的行被插入其中。以下是我如何创建用户必须输入的实际表单。
<?php
session_start();
include("testconnect.php");
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login Page</title>
</head>
<body>
<style>
#signup-box{
margin:auto;
width: 300px;
padding: 30px;
background-color: grey;
}
</style>
<div id="signup-box">
<form method="POST">
<input style="width:100%" type="text" name="Username"><br><br>
<input style="width:100%" type="password" name="Password"><br><br>
<input type="button" value="Submit">
</form>
</div>
</body>
</html>
这就是我声明我的 php mysql 连接的方式。
<?php
$conn=mysqli_connect('localhost','root','','practice') or die ("unable to connect to database");
$username1=mysqli_real_escape_string($conn,$_POST['Username']);
$password1=mysqli_real_escape_string($conn,$_POST['Password']);
$query="insert into usertable values('$username1','$password1')";
mysqli_query($conn,$query);
我希望这里有人可以帮助我解决我的这个小问题。
附言。已经到处寻找解决方案,但所提供的解决方案似乎都没有解决问题。附言。已经检查了db连接,但似乎完全没有问题
解决方案
如果我们假设您要插入数据库的 PHP 代码是testconnect.php
,您必须在表单标签中提供一个操作。在您的代码中,在浏览器中向您显示任何内容之前的第一件事是插入 SQL,然后表单将显示给您。你提供的代码是这样的:
<?php
session_start();
$conn=mysqli_connect('localhost','root','','practice') or die ("unable to connect to database");
$username1=mysqli_real_escape_string($conn,$_POST['Username']);
$password1=mysqli_real_escape_string($conn,$_POST['Password']);
$query="insert into usertable values('$username1','$password1')";
mysqli_query($conn,$query);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login Page</title>
</head>
<body>
<style>
#signup-box{
margin:auto;
width: 300px;
padding: 30px;
background-color: grey;
}
</style>
<div id="signup-box">
<form method="POST">
<input style="width:100%" type="text" name="Username"><br><br>
<input style="width:100%" type="password" name="Password"><br><br>
<input type="button" value="Submit">
</form>
</div>
</body>
</html>
所以需要把它改成这样:
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login Page</title>
</head>
<body>
<style>
#signup-box{
margin:auto;
width: 300px;
padding: 30px;
background-color: grey;
}
</style>
<div id="signup-box">
<form action="testconnect.php" method="POST">
<input style="width:100%" type="text" name="Username"><br><br>
<input style="width:100%" type="password" name="Password"><br><br>
<input type="button" value="Submit">
</form>
</div>
</body>
</html>
推荐阅读
- mysql - 有没有办法可视化 MySQL 外键级联?
- sql - SQL 通配符不产生任何结果
- java - 使用 JPA 和 Hibernate 覆盖 CrudeRepository save() 错误
- swift - 缺少作为视图祖先的视图
- c++ - map 是否将元素存储为 std::pair?
- c++ - macosx Catalina是否总是默认使用clang?
- c - 如何使用 C 编程使 SCTP 校验和非零
- python - 在 python 中加载大型数据集出现 2 个错误中的 1 个 - 内存问题或退出代码 -1073741819 (0xC0000005)
- soap - 为什么 Coldfusion Compoent WSDL 文件不会在 cfcomponent 标记中使用 serviceaddress 属性更新
- javascript - forEach 进入 for 循环