php - sql中没有插入数据
问题描述
sql中没有插入数据
当密码不相等时,密码不相等正在工作。但是,当密码匹配时,我的 sql 中不会更新任何数据。已经尝试直接从数据库导入数据到sql,也确认连接数据库已经完成。
<?php
$host= 'localhost';
$user= 'root';
$pass= '';
$db= 'newusers';
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$password = $_POST['password'];
$con=mysqli_connect($host,$user,$pass,$db);
if($con)
/*echo 'Connected Successfully to newusers database';*/
//if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//check passwords are equal
if($_POST['password'] != $_POST['confirmpassword']){
echo 'Passwords are not equal';
}
if ($_POST['password'] == $_POST['confirmpassword']){
$sql = "INSERT INTO signup (Name, Surname, Email, Password) values ('$name', '$surname', '$email', '$password')";
}
?>
预期的结果是,如果密码相同,数据将上传到 mysql
解决方案
您的代码有几个问题。首先,您没有在正确的位置使用大括号来确保您的比较符合上下文。您应该在连接检查周围有花括号:
if($con) {
// your code here
}
解决这个问题,然后您需要执行您的查询。一种方法是使用mysqli_query()
:
$host= 'localhost';
$user= 'root';
$pass= '';
$db= 'newusers';
$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$password = $_POST['password'];
$con=mysqli_connect($host,$user,$pass,$db);
if($con) { // added opening bracket here
/*echo 'Connected Successfully to newusers database';*/
//if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//check passwords are equal
//} added closing bracket here
if($_POST['password'] != $_POST['confirmpassword']){
echo 'Passwords are not equal';
} else { // you don't need another 'if' statement
$sql = "INSERT INTO signup (Name, Surname, Email, Password) values ('$name', '$surname', '$email', '$password')";
$result = mysqli_query($con, $sql); // execute the query
}
}
警告!
Little Bobby说您的脚本面临 SQL 注入攻击的风险。了解MySQLi的预处理语句。即使转义字符串也不安全!
永远不要存储纯文本密码!请使用PHP 的内置函数来处理密码安全问题。如果您使用的 PHP 版本低于 5.5,则可以使用password_hash()
兼容性包。 在散列之前没有必要对密码进行转义或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。
经常检查错误!
<?php
在您的开始标签之后添加错误报告到您的文件顶部error_reporting(E_ALL); ini_set('display_errors', 1);
添加错误检查,例如or die(mysqli_error($con))
您的查询。或者,您可以在当前的错误日志中找到问题。
推荐阅读
- postgresql - .pgpass 为一个用户工作,但不是 postgres 用户
- node.js - Node.js:本机加密模块无法用于获取安全随机数
- java - Hibernate - 为什么延迟加载 String 属性?
- mongodb - Typegoose 模型和多对多关系
- python - Python 生成器,它根据定义的分隔符生成行
- time-complexity - 递归算法的时间和空间复杂度
- c++ - python-for-android、Cython、C++、CythonRecipe:只允许在 c++ 中进行操作
- javascript - React Native,带有文本的图像滑块框
- flutter - VSCode Flutter安装问题:初始化Flutter失败:进程退出,代码126
- csv - 如何改为使用 read-csv-file 从字符串中读取?