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


Simple PHP signup script not working

我有一个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>

数据库结构

我不知道

你的问题是否直接来自此,但是当你使用mysqli_real_escape_string时,你必须将你的连接作为函数的第一个参数发送,请参阅文档以获取更多详细信息:http://php.net/manual/en/mysqli.real-escape-string.php。所以这看起来像这样:

$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');

希望这有帮助!

您必须将操作属性添加到表单中,如下所示:

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

尝试调试查询:

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['用户名']);

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

$email = mysqli_real_escape_string($con, $_POST['电子邮件']);

希望这有帮助。

和平! xD