我把这一切都搞定了,感谢你的帮助,并指出了我正确的方向。
我有一个网络主机,它有MySQL和phpMyAdmin。下面的代码显示了我的.php文件中的PHP。当我提交表单时,数据不会存储在SQL数据库中。
我的数据库是一个名为' Logins'的表。它有三个字段:' userID'这是一种自动增量类型,'电子邮件'这是一个VARCHAR和'密码'这也是一个VARCHAR。
我已经测试了我的连接,它确实有效,这意味着代码中的某些内容是错误的,但我无法找到它。如果你们能帮助我,我将不胜感激。
这是我的代码:
<form action="index.php" method="post">
<p>Email Address:</p>
<input type="text" name="email" required autofocus pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$" placeholder="Please enter your email">
<p>Password:</p>
<input type="text" name="password" required placeholder="Enter your password">
<p>Confirm Password:</p>
<input type="text" name="confirmpassword" required placeholder="Confirm your password">
<br>
<input class="button" type="submit" value="Register">
</form>
<?php
if($_POST['submit']=="Submit")
{
$email = cleanData($_POST['email']);
$password = cleanData($_POST['password']);
$message = "wrong answer";
addData($email, $pasword);
}
function cleanData($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = strip_tags($data);
return $data;
}
function addData ($email, $password)
{
//include("dbinfo.php");
$dbhost = 'mysql11.000webhost.com';
$dbuser = '************'; //censored for security
$dbpass = '******'; //censored for security
$conn = mysql_connect("$dbhost", "$dbuser", "$dbpass");
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql="INSERT INTO Logins ('userID','email','password') VALUES (null, '$email', '$password')";
$result=mysql_query($sql) or die(mysql_error());
}
?>
答案 0 :(得分:0)
更改if($_POST['submit']=="Submit")
到if(!empty($_POST['email']) && !empty($_POST['password']))
答案 1 :(得分:0)
sql insert字段名称不应该在引号中,并且您提到userID
是自动递增的,因此除非您想将其设置为特定值,否则不需要包含它。
$sql="INSERT INTO Logins (email, password) VALUES ('$email', '$password')";
您应该考虑更改为mysqli
,因为mysql
已弃用。
编辑:您的mysql_connect
在您提供的代码中缺少数据库选择变量。
如果您使用每个mysqli函数的返回值,您会发现调试mysql查询更容易。下面的代码检查并返回与数据库连接,查询准备,参数绑定和执行相关的任何错误。
此过程可以更容易地识别出现的问题,并且可以使用修改来记录错误,并在生产过程中向用户报告错误。
function addData ($email, $password)
{
//include("dbinfo.php");
$dbhost = 'mysql11.000webhost.com';
$dbuser = '************'; //censored for security
$dbpass = '******'; //censored for security
$dbname = ''; // this is currently missing
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
/* check connection */
if ($mysqli->connect_errno) {
die("Connect failed: ".$mysqli->connect_error);
}
// define the query
$sql="INSERT INTO Logins (email, password) VALUES (?, ?)";
// prepare the query
if (!$stmt = $mysqli->prepare($sql)) {
// failed to prepare query;
die("Prepare failed: ".$stmt->error);
}
// bind the parameters
if (!$res = $stmt->bind_param('ss', $email, $password)) {
// failed to bind
die("Bind failed: ".$stmt->error);
}
// execute
if (!$res = $stmt->execute()) {
// failed to execute
die("Execute failed: ".$stmt->error);
}
echo "Rows inserted: ".$stmt->affected_rows;
}
答案 2 :(得分:0)
你必须更换一行:if($ _ POST [&#39; submit&#39;] ==&#34; Submit&#34;)
截至if(!empty($_POST['submit']))
或者if($_POST['submit']=="Register")
尝试连接错误的密码和错误的登录想知道是否 它显示消息