简单的PHP注册脚本不起作用

时间:2016-03-16 16:51:21

标签: php mysqli

我在PHP中有一个注册脚本。它在提交时被插入到数据库中,但输入的用户名,密码和电子邮件是空白的(数据库中没有文本)。

这是我的剧本;

<?php

$con = mysqli_connect("localhost","dbuser","dbpass","dbname");

if(isset($_POST['submit'])) {

$username = mysqli_real_escape_string($_POST['username']);
$password = mysqli_real_escape_string($_POST['password']);
$email = mysqli_real_escape_string($_POST['email']);

mysqli_query($con, "INSERT INTO `users` (username, password, email) VALUES ('$username', '$password', '$email')");

}
?>

<form method="POST">
<input type="text" placeholder="Username" name="username">
<input type="password" placeholder="Password" name="password">
<input type="email" placeholder="Email" name="email">
<input type="submit" name="submit">
</form>

Database structure

3 个答案:

答案 0 :(得分:2)

我不知道您的问题是否直接来自此问题,但是当您使用mysqli_real_escape_string时,您必须将您的连接作为该函数的第一个参数发送,请参阅文档以获取更多详细信息:{ {3}}。所以这看起来像这样:

$username = mysqli_real_escape_string($con, $_POST['username']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$email = mysqli_real_escape_string($con, $_POST['email']);

可能是php尝试拍摄一些错误和异常,但默认情况下,使用php禁用错误日志记录。尝试在php文件的顶部激活它:

error_reporting(-1);
ini_set('display_errors', 'On');

希望这有帮助!

答案 1 :(得分:0)

尝试调试您的查询:

echo "<pre>";

print_r($_POST); // Are username, email, password showing correctly in the array?

mysqli_query($con, "INSERT INTO `users` (username, password, email) VALUES ('".$username."', '".$password."', '".$email"')") or die(mysqli_error($con)); // Will show an error if something'g wrong with the SQL syntax

检查你的mysqli_real_escape_string语法:

$ username = mysqli_real_escape_string($ con,$ _POST ['username']);

$ password = mysqli_real_escape_string($ con,$ _POST ['password']);

$ email = mysqli_real_escape_string($ con,$ _POST ['email']);

希望这有帮助。

和平!的xD

答案 2 :(得分:0)

您必须向表单添加action属性,如:

<form method="POST" action="yourfilename.php" id="join">
    <input type="text" placeholder="Username" name="username">
    <input type="password" placeholder="Password" name="password">