【发布时间】:2015-10-06 12:33:58
【问题描述】:
我可以从数据库读取,但是当我向数据库插入数据时,它说“注册成功!”,然后我检查我的数据库,它没有插入任何数据。
注册.php
<!DOCTYPE HTML>
<html>
<head>
<title>Register page</title>
<br>
<font size="5" color="black"><b> Register Page<br><br></b></font>
</head>
<body background=" images/background.jpg">
<form action="index.php">
<input type="submit" value="Home">
</form>
<br>
<form action="Register.php" method="POST">
<fieldset>
<legend>Enter your information</legend>
<table>
<tr>
<td>Username:</td>
<td><input type="text" name="username" required="required"/><br></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="text" name="password" required="required"/><br></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email" required="required"/><br></td>
</tr>
<tr>
<td>First Name:</td>
<td><input type="text" name="firstname" required="required"/><br></td>
</tr>
<tr>
<td>Last Name:</td>
<td><input type="text" name="lastname" required="required"/><br></td>
</tr>
<tr>
<td>Date of Birth:</td>
<td><input type="date" name="dateofbirth" required="required" ><br></td>
</tr>
<tr>
<td><input type="submit" value="Register"/></td>
</tr>
</table>
</fieldset>
</form>
</body>
</html>
<?php
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = mysql_real_escape_string($_POST['email']);
$dateofbirth= $_POST['dateofbirth'];
echo "user is :".$username;
$bool = true;
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("userdata") or die(mysql_error("Cannot Connect to Database"));
$query = mysql_query("SELECT * FROM users");
while($row = mysql_fetch_array($query))
{
$table_users = $row['username'];
if($username == $table_users)
{
$bool = false;
Print '<script>alert("username is used!");</script>';
Print '<script>window.location.assign("Register.php");</script>';
}
}
if($bool)
{
mysql_query("INSERT INTO users ('username','password','email','firstname','lastname','dateofbirth') VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')");
Print '<script>alert("Successfully Registered!");</script>';
Print '<script>window.location.assign("Register.php");</script>';
}
}
?>
已解决: 我用 PDO 代替了 mysql_ 和 mysqli_ 。
【问题讨论】:
-
在插入查询中
'username'之前缺少单引号(实际上您不需要封装列名,并且无论如何都应该使用反引号)。您没有检查插入是否成功。您正在使用已弃用的 mysql_ 函数而不是 mysqli_ -
为什么你还在使用 mysql_connect ,它已经被弃用了,请使用 PDO 代替它。
-
我不知道如何使用PDO,如果更好的话希望你能帮助我
-
你应该测试看看
mysql_query实际上返回了什么,而不是仅仅假设它成功了。这不是插入失败的原因,但有助于排除故障,让您有机会捕获错误并报告问题,而不仅仅是默默地丢弃数据。 -
PDO 解决了我的问题,谢谢大家
标签: php mysql database insert-into