我通过在Mac上运行MAMP并通过phpMyAdmin访问数据库来学习PHP和SQL。
我已经制作了一个PHP脚本来向表中添加新用户,一个用于将输入数据与表(登录)进行比较,一个用于关闭帐户。所有脚本都非常基础,数据根本没有消毒,因为我只是习惯了PHP的基础知识。
我注意到在运行脚本创建帐户(插入数据)后,在脚本运行几秒钟后,一个新行被添加到带有id的表中(我已经这样做了)设置为自动增量)但没有其他数据。
我只是想知道这个问题的原因是否在MySQL中显而易见,我只是缺席了。
以下是帐户创建脚本:
<?php
//Get values from HTML form
$varUsername = $_POST['username'];
$varPassword = $_POST['password'];
$varPasswordHash = password_hash($varPassword, PASSWORD_DEFAULT);
//Establish connection to database
$server = "localhost";
$username = "root";
$password = "root";
$database = "members";
$connection = mysqli_connect($server, $username, $password, $database);
if(!$connection)
{
die("Connection failed: " . mysqli_connect_error());
}
//Send data to database
$action = "INSERT INTO details (USERNAME, PASSWORD) VALUES ('$varUsername', '$varPassword')";
if(mysqli_query($connection, $action))
{
echo 'Account created.';
}
else
{
echo 'Account creation failed: ' . mysqli_error($connection);
}
mysqli_close($connection); //End connection to database
?>
和HTML表单一起使用:
<html>
<body>
<form action="sign_up.php" method="post">
<input type="text" name="username">
<input type="text" name="password">
<input type="submit">
</form>
</body>
</html>
答案 0 :(得分:2)
我现在正在猜测......
我会在脚本本身添加一个额外的if语句。像这样:
if (isset($_POST['submit-form'])) {
// All the above to insert the data into the script...
}
如果您访问sign_up.php
本身并注意到您的数据库中有新条目,那将是有意义的。
您必须稍微修改一下HTML,才能使if语句正常工作。
只需将name='submit-form'
添加到提交按钮:<input type="submit" name="submit-form">
这将使脚本更完整。
关于此事的一点点更新,因为我刚刚读到它在您提交空表单后添加了一个空行。
你可以检查字段是否填充,猜猜是什么,另一个if语句:
if (empty($_POST['username'])) {
echo 'Please enter your username...';
} else
if (...)
答案 1 :(得分:0)
您不验证POSTed值是否包含任何内容,因此提交空表单会导致数据库中只有ID的空条目。