使用PHP将值插入服务器

时间:2015-01-25 20:21:48

标签: php mysql

这是一个基本的(我认为)工作注册表,我经历了它,并没有看到我的剧本中有任何漏洞。

我的主要问题是他们的代码运行完全没有错误,但是当我在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 !";
        }



    }

?>

2 个答案:

答案 0 :(得分:3)

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

脚本无法运行

确保您的服务器可以运行PHP脚本并运行此脚本。通过在此脚本顶部传递一个简单的echo语句进行测试,就在打开<?php标记之后(不应该在&#39;之间有空格)。

条件失败

如果第五行的条件失败,您的查询将不会执行。我怀疑你想确保$ _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将报告的错误之一是该查询错误地引用了数据库,表和列名称;数据库,表和列名称需要用反引号(`)而不是单引号(&#39;)包围:

$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和准备好的声明作为第一道防线。

答案 1 :(得分:-1)

您需要将数据库连接放在查询函数中:

$dbc = mysqli_connect($host, $user, $password, $database);
$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 !";
}