我是php新手,我正在尝试创建一个注册表单。我不知道为什么我的代码没有向数据库添加新用户,它不会给任何错误消息只是转到白屏。我不知道它是否连接到DB,但我相信它会给我一个错误信息,对吗?
这是我的PHP代码:
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'class_rate');
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
$con = mysqli_connect(DB_HOST, DB_USER,DB_PASSWORD) or die("Failed to connect" . mysqli_error());
$db = mysqli_select_db($con, DB_NAME) or die("Failed to connect" . mysqli_error());
function NewUser(){
$name = $_POST['nome'];
$email = $_POST['email'];
$password = $_POST['password'];
$query = "INSERT INTO users (nome_user,email_user,passw_user) VALUES ('$name','$email','$password')";
$data = mysqli_query($query)or die(mysql_error());
if($data) {
echo "YOUR REGISTRATION IS COMPLETED...";
}
}
function SignUp(){
if (!empty($_POST['email'])) {
$query = mysqli_query("SELECT * FROM users WHERE email_user = $_POST[email]' AND passw_user = '$_POST[password]'") or die(mysqli_error());
}
if(!$row = mysqli_fetch_array($query) or die(mysqli_error()) ){
NewUser();
}
else{
echo "Email already registered!";
}
}
if (isset($_POST['submit'])) {
SignUp();
}
?>
答案 0 :(得分:1)
您的脚本中存在一些问题。
mysqli_error()
需要连接作为参数,实例中为$con
,而"SELECT * FROM users WHERE email_user = $_POST[email]' AND passw_user = '$_POST[password]'")
中缺少一个单引号应为"SELECT * FROM users WHERE email_user = '$_POST[email]' AND passw_user = '$_POST[password]'")
可变范围,在您的职能function NewUser()
,function SignUp()
中,他们无法访问$con
和$db
,解决方案很少:
我。要使变量为GLOBAL,不建议这样做,因为在PHP中使用GLOBAL关键字通常不是一个好习惯。
II。将$con
作为参数传递给函数,因此在此实例中,您的函数将变为function NewUser($con)
,function SignUp($con)
III。使用类来解决这个问题。
3.对于您的查询语句,SELECT col1, col2
只需要您需要的列而不是SELECT *
作为最佳做法。
4.检查POST参数的空值以及输入参数的一些清理以防止注入和不需要的标签/ javascripts也是一个好主意。
如果您有任何其他问题,请与我们联系。
答案 1 :(得分:-2)
在这里试试这段代码
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'class_rate');
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
$con = mysqli_connect(DB_HOST, DB_USER,DB_PASSWORD) or die("Failed to connect" . mysqli_error());
$db = mysqli_select_db($con, DB_NAME) or die("Failed to connect" . mysqli_error());
function NewUser(){
global $con;
$name = $_POST['nome'];
$email = $_POST['email'];
$password = $_POST['password'];
$query = "INSERT INTO users (nome_user,email_user,passw_user) VALUES ('$name','$email','$password')";
$data = mysqli_query($con, $query)or die(mysqli_error());
if($data) {
echo "YOUR REGISTRATION IS COMPLETED...";
}
}
function SignUp(){
global $con;
if (!empty($_POST['email'])) {
$query = mysqli_query($con, "SELECT * FROM users WHERE email_user = $_POST[email]' AND passw_user = '$_POST[password]'") or die(mysqli_error());
}
if(!$row = mysqli_fetch_array($query) or die(mysqli_error()) ){
NewUser();
}
else{
echo "Email already registered!";
}
}
if (isset($_POST['submit'])) {
SignUp();
}
?>