为什么我的PHP没有插入数据库?
我已经做了一个简单的登录到主网页。如果用户登录成功,用户名、昵称和日期应该插入数据库“userdata”,为什么不是这样?我没有收到任何错误,但我的数据库没有更新,仍然是空的 php:为什么我的PHP没有插入数据库?,php,mysql,login,Php,Mysql,Login,我已经做了一个简单的登录到主网页。如果用户登录成功,用户名、昵称和日期应该插入数据库“userdata”,为什么不是这样?我没有收到任何错误,但我的数据库没有更新,仍然是空的 php: 这里简单介绍一下,strip\u tags不是一个安全的转义函数,我会选择mysqli\u real\u scape\u string乍一看,INSERT块的else应该放在括号中(这样它就可以调用查询和头),并且应该有一个退出在标题()之后呼叫。若要排除查询失败的故障,请将其放入if-语句中,就像您使用if($
这里简单介绍一下,strip\u tags
不是一个安全的转义函数,我会选择mysqli\u real\u scape\u string
乍一看,INSERT块的else
应该放在括号中(这样它就可以调用查询和头
),并且应该有一个退出代码>在标题()之后代码>呼叫。若要排除查询失败的故障,请将其放入if
-语句中,就像您使用if($query){
时所做的那样,也可能需要使用准备好的语句。$connect=mysqli\u connect(“,”,“,,”root\u root”);有效?!你只是假设插入查询成功。这是个坏主意。在处理外部资源时,尤其是数据库时,千万不要假设成功。即使你的SQL在语法上100%正确,你的查询也有无数其他原因可能导致故障转移(例如缺少外键)。
<?php
error_reporting(E_ALL & ~E_NOTICE);
session_start();
if($_POST['submit']) {
$username = strip_tags($_POST['username']);
$password = strip_tags($_POST['password']);
$sql = "SELECT id, username, password, nickname FROM users WHERE username = '$username' AND activated = '1' LIMIT 1";
$connect = mysqli_connect("", "", "", "root_root");
$query = mysqli_query($connect, $sql);
if ($query) {
$row = mysqli_fetch_row($query);
$userId = $row[0];
$dbUsername = $row[1];
$dbPassword = $row[2];
$userLabel = $row[3];
}
if ($username == $dbUsername && $password == $dbPassword) {
$_SESSION['username'] = $username;
$_SESSION['id'] = $userId;
$_SESSION['nickname'] = $userLabel;
$date = date('m/d/y | H:i:s');
if ($dbPassword == "password") {
header('Location: firstlogin.php');
}
else
mysqli_query($connect, "INSERT INTO userdata (username, name, timein) VALUES ('$username', '$userLabel', '$date')");
header('Location: main.php');
}
else {
$error = "Error: Invalid username or password.";
}
}
?>