表单信息未更新到我的数据库
Form information is not updating to my Database
我已经坚持了 3 天了,非常感谢任何帮助。
请注意,我现在在一个页面上有 php 和 html,直到我让它工作,然后一旦它被修复,我将把 php 连接脚本放到它的常用文件夹中。
当我进入注册页面时,我可以看到我已连接到我的,我可以填写我的表格并提交,没有任何错误,但是数据库不会更新,当我刷新数据库时没有发现新用户。
以下是我到目前为止的代码,如果有人可以告诉我我做错了什么或者我可以改进以修复此错误的地方,我将非常感激。
提前致谢!
<?php
$host="localhost";
$dbuser="root";
$pass="********";
$dbname="amsadler";
$con = mysqli_connect ($host, $dbuser, $pass, $dbname);
if (mysqli_connect_errno ())
{
die ("Connection Failed!" . mysqli_connect_error());
}
else
{
echo "Connected to database {$dbname} ";
}
if(isset($_POST['submit']))
{
$fname = mysqli_real_escape_string($con, $_POST ['fname']);
$lname= mysqli_real_escape_string($con, $_POST ['lname']);
$email= mysqli_real_escape_string($con, $_POST ['email']);
$pswrd= mysqli_real_escape_string($con, $_POST ['pswrd']);
$sql = $con->query("INSERT INTO users ( fname, lname, email, pswrd,)
VALUES ( ' {$fname} ' , ' {$lname} ' , ' {$email} ' , ' {$pswrd} ' )");
}
?>
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Signup</title>
<meta charset="utf-8">
<meta name="description" content="description of webpage">
<meta name="keywords" content="keywords go here">
<meta name="author" content="amsadler">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/signup.css">
<link rel="index" href="index.php">
<link rel="icon" href="img/favicon.png" sizes="16x16" type="image/png">
</head>
<body>
<div class="header">
<div id="logo">
<a href="index.php"><img src="img/logo.png" alt="logo" title="blah blah"/></a>
</div>
</div>
<div id="signupform">
<form method="post"><br>
<input type="text" id="fname" name="fname" placeholder="First name">
<input type="text" id="lname" name="lname" placeholder="Last name"><br><br>
<input type="text" id="email" name="email" placeholder="Email address">
<input type="password" id="pswrd" name="pswrd" placeholder="Password"><br><br>
<input id="button" type="submit" value="Submit">
</form>
</div>
<?php
include ("inc/footer.php");
?>
</body>
</html>
这里有一些问题。
其中之一与您的条件语句一致:
if(isset($_POST['submit'])){...}
由于缺少名称属性,其中的任何内容都不会启动 "submit"。
为您的提交按钮命名:
<input name="submit" id="button" type="submit" value="Submit">
^^^^^^^^^^^^^
然后在您的查询中添加一个逗号:
( fname, lname, email, pswrd,)
↑
删除它
( fname, lname, email, pswrd)
将 or die(mysqli_error($con))
添加到 mysqli_query()
在查询中使用错误检查将在您命名提交按钮时立即显示另一个语法错误:
你说没有错误?您很可能没有检查它们,或者您的系统没有为它设置并显示它们。
将 error reporting 添加到您的文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:显示错误只应在试运行中进行,绝不能在生产中进行。
- 它会发出未定义的索引提交通知。
为了绝对确保查询成功,请使用affected_rows()
。
我注意到您可能以纯文本形式存储密码。如果是这种情况,非常不鼓励。
我推荐你使用CRYPT_BLOWFISH or PHP 5.5's password_hash()
function. For PHP < 5.5 use the password_hash() compatibility pack
。
确保当您使用安全的散列方法时,您的密码列足够长以容纳散列。
一个安全的选择是 VARCHAR(255),PHP.net 建议使用它。详细信息列在他们的网站上。
我已经坚持了 3 天了,非常感谢任何帮助。 请注意,我现在在一个页面上有 php 和 html,直到我让它工作,然后一旦它被修复,我将把 php 连接脚本放到它的常用文件夹中。 当我进入注册页面时,我可以看到我已连接到我的,我可以填写我的表格并提交,没有任何错误,但是数据库不会更新,当我刷新数据库时没有发现新用户。 以下是我到目前为止的代码,如果有人可以告诉我我做错了什么或者我可以改进以修复此错误的地方,我将非常感激。 提前致谢!
<?php
$host="localhost";
$dbuser="root";
$pass="********";
$dbname="amsadler";
$con = mysqli_connect ($host, $dbuser, $pass, $dbname);
if (mysqli_connect_errno ())
{
die ("Connection Failed!" . mysqli_connect_error());
}
else
{
echo "Connected to database {$dbname} ";
}
if(isset($_POST['submit']))
{
$fname = mysqli_real_escape_string($con, $_POST ['fname']);
$lname= mysqli_real_escape_string($con, $_POST ['lname']);
$email= mysqli_real_escape_string($con, $_POST ['email']);
$pswrd= mysqli_real_escape_string($con, $_POST ['pswrd']);
$sql = $con->query("INSERT INTO users ( fname, lname, email, pswrd,)
VALUES ( ' {$fname} ' , ' {$lname} ' , ' {$email} ' , ' {$pswrd} ' )");
}
?>
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Signup</title>
<meta charset="utf-8">
<meta name="description" content="description of webpage">
<meta name="keywords" content="keywords go here">
<meta name="author" content="amsadler">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/signup.css">
<link rel="index" href="index.php">
<link rel="icon" href="img/favicon.png" sizes="16x16" type="image/png">
</head>
<body>
<div class="header">
<div id="logo">
<a href="index.php"><img src="img/logo.png" alt="logo" title="blah blah"/></a>
</div>
</div>
<div id="signupform">
<form method="post"><br>
<input type="text" id="fname" name="fname" placeholder="First name">
<input type="text" id="lname" name="lname" placeholder="Last name"><br><br>
<input type="text" id="email" name="email" placeholder="Email address">
<input type="password" id="pswrd" name="pswrd" placeholder="Password"><br><br>
<input id="button" type="submit" value="Submit">
</form>
</div>
<?php
include ("inc/footer.php");
?>
</body>
</html>
这里有一些问题。
其中之一与您的条件语句一致:
if(isset($_POST['submit'])){...}
由于缺少名称属性,其中的任何内容都不会启动 "submit"。
为您的提交按钮命名:
<input name="submit" id="button" type="submit" value="Submit">
^^^^^^^^^^^^^
然后在您的查询中添加一个逗号:
( fname, lname, email, pswrd,)
↑
删除它
( fname, lname, email, pswrd)
将 or die(mysqli_error($con))
添加到 mysqli_query()
在查询中使用错误检查将在您命名提交按钮时立即显示另一个语法错误:
你说没有错误?您很可能没有检查它们,或者您的系统没有为它设置并显示它们。
将 error reporting 添加到您的文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:显示错误只应在试运行中进行,绝不能在生产中进行。
- 它会发出未定义的索引提交通知。
为了绝对确保查询成功,请使用affected_rows()
。
我注意到您可能以纯文本形式存储密码。如果是这种情况,非常不鼓励。
我推荐你使用CRYPT_BLOWFISH or PHP 5.5's password_hash()
function. For PHP < 5.5 use the password_hash() compatibility pack
。
确保当您使用安全的散列方法时,您的密码列足够长以容纳散列。
一个安全的选择是 VARCHAR(255),PHP.net 建议使用它。详细信息列在他们的网站上。