使用 PHP 将值插入服务器


Inserting Values into Server using PHP

这是一个

基本的(所以我认为)工作注册表,我浏览了它,没有看到我的脚本中有任何大洞。

我的主要问题是他们的代码完全运行没有错误,但是当我在phpMyAdmin中回头看我的表时,最终的echo语句没有出现,并且没有插入细节。

<? php
    require 'connect.php';
    if (isset($_POST['username', 'password', 'firstname', 'lastname', 'email', 'age']){
        $username = $_POST['username'];
        $password = $_POST['password'];
        $firstname = $_POST['firstname'];
        $lastname = $_POST['lastname'];
        $email = $_POST['email'];
        $age = $_POST['age'];
        $query = "INSERT INTO 'user_details'.'user_login_details' ('id', 'username', 'firstname', 'lastname', 'email', 'password', 'age) VALUES (NULL, '$username', '$firstname', '$lastname', '$email', '$password', '$age')";
        $result = mysqli_query($query);
        if ($result == true){
            echo "User Created Successfully. Welcome to the family !";
        }

    }
?>

有几个可能的原因导致您的 echo 语句未执行

脚本运行失败

确保您的服务器可以运行 PHP 脚本,并且此脚本可以运行。通过在此脚本顶部传递一个简单的 echo 语句进行测试,紧跟在开始 <?php 标记之后(在"

有条件失败

如果条件在第五行失败,则查询将不会执行。我怀疑您想确保每个变量都存在于 $_POST 中,但代码现在没有这样做。相反,请尝试单独检查每个键:

if (isset($_POST['username'] && isset($_POST['password'])...)

else 子句添加一些调试输出以确定条件是否失败:

if (...) {
    //
} else {
    echo "Please enter a value in all required fields."
}

查询失败

代码执行查询,但无法确定查询是否成功完成。对于调试,您可以执行以下操作:

$result = mysqli_query($query) or die('Query failed: ' . mysql_error());

对于生产代码,请检查返回值

if ($result == true){

并创建 else 子句来管理故障

} else {
    // Log mysql_error() to an appropriate location

mysql_error()将显示有关查询或连接中错误的详细信息。

mysql_error将报告的错误之一是查询错误地引用了数据库、表和列名;数据库、表和列名需要用反引号 (') 而不是单引号 (') 括起来:

$query = "INSERT INTO `user_details`.`user_login_details` (`id`, `username`, `firstname`, `lastname`, `email`, `password`, `age`) VALUES (NULL, '$username', '$firstname', '$lastname', '$email', '$password', '$age')";

只有值应该用单引号括起来

弃用和安全警告

正如其他人所指出的,该代码使用已弃用的mysql_*函数,并且容易受到SQL注入攻击。考虑升级到 PDO 和准备好的语句作为第一道防线。