这是一个基本的(我认为)工作注册表,我经历了它,并没有看到我的剧本中有任何漏洞。
我的主要问题是他们的代码运行完全没有错误,但是当我在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 !";
}
}
?>
答案 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 !";
}