无法将PHP插入MYSQL数据库
我可以从数据库中读取数据,但当我将数据插入数据库时,它会显示“已成功注册!”,然后我检查我的数据库,它并没有插入任何数据 Register.php无法将PHP插入MYSQL数据库,php,mysql,database,insert-into,Php,Mysql,Database,Insert Into,我可以从数据库中读取数据,但当我将数据插入数据库时,它会显示“已成功注册!”,然后我检查我的数据库,它并没有插入任何数据 Register.php <!DOCTYPE HTML> <html> <head> <title>Register page</title> <br> <font size="5" color="black"><b> Register Page&
<!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>';
}
}
?>
注册页
注册页面
输入您的信息
用户名:
密码:
电邮:
名字:
姓氏:
出生日期:
更新你的底码
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>';
}
if($bool)
{
mysql_查询(“插入用户('username'、'password'、'email'、'firstname'、'lastname'、'dateofbirth')值('$username'、'$password'、'$email'、'$firstname'、'$dateofbirth');
打印“警报(“已成功注册!”);
打印“window.location.assign”(“Register.php”);
}
在mysql查询中,用户名前面缺少一个开头。不确定是否是问题,但会导致问题。更正SQL:
mysql_query("INSERT INTO users (username','password','email','firstname','lastname','dateofbirth') VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')");
到
说明:
在MySQL中,字段名不是用单引号括起来的。相当地
它们可以用倒勾(`)括起来,以避免与
保留关键字
注意:不要使用mysql.*
函数。它们已被弃用,您可以改为mysqli*
或PDO
。这与插入问题本身无关,而是与检查数据库中是否存在用户名的例程有关:
...
$bool = true;
$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>';
}
}
if($bool)
{
...
然后只检查查询是否返回任何行
希望这能有所帮助。我测试了您的代码,发现连接不正确,第二次您在字段名称中使用的引号语法不正确,因此查询无法执行。我的意见是使用mysqli_connect而不是mysql_connect,因为它已经过时了。我已经更新了您的代码,希望它能帮助您:
<?php
//your values from post I just assign test for all
$username = 'test';//mysql_real_escape_string($_POST['username']);
$password = 'test';//mysql_real_escape_string($_POST['password']);
$firstname = 'test';//mysql_real_escape_string($_POST['firstname']);
$lastname = 'test';//mysql_real_escape_string($_POST['lastname']);
$email = 'test';//mysql_real_escape_string($_POST['email']);
$dateofbirth= 'test';//mysql_real_escape_string($_POST['dateofbirth']);
$bool = true;
//database connection
$servername = "localhost";
$username1 = "root";
$password1 = "";
$db = 'test_001';
// Create connection
$conn = new mysqli($servername, $username1, $password1, $db);
$result = $conn->query("SELECT * FROM users");
while($row = $result->fetch_assoc())
{
$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')");
$query = "INSERT INTO users (username,password,email,firstname,lastname,dateofbirth) VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')";
$x = $conn->query($query);
if ($x)
Print '<script>alert("Successfully Registered!");</script>';
Print '<script>window.location.assign("Register.php");</script>';
}
您需要删除字段名周围的引号,因此您的任务应该是
插入用户(用户名、密码、电子邮件、名字、姓氏、出生日期)
值(“$username”、“$password”、“$email”、“$firstname”、“$lastname”、“$dateofbirth”)
我还建议使用DB包装器自动转义变量
PDO解决此问题
MYSQL产生了许多问题,但当我使用PDO时,它解决了插入查询中的问题在'username'
之前缺少一个引号(实际上不需要封装列名,无论如何都应该使用反勾号)。您没有检查插入是否成功。您正在使用已弃用的mysql_uu函数而不是mysqli_u为什么您仍在使用mysql_uConnect,它已经弃用,请使用PDO而不是此。我不知道如何使用PDO,我希望您能帮助我它是否更好您应该测试查看mysql_u查询
实际返回的内容,而不仅仅是假设它成功。这不是插入失败的原因,但这将有助于排除故障,并为您提供一个捕获错误并报告问题的机会,而不仅仅是默默地丢弃数据。PDO解决我的问题谢谢everyone@WaleedWalaaAldeanAbuZaid编辑您的问题并编写您正在运行的代码now@WaleedWalaaAldeanAbuZaid现在应该可以了。我们再次尝试引用表名,比如users
我这样做了,仍然有问题..当我有用户名为“admin”的行时,当我插入用户名admin时,它说“username is used”,这意味着问题不在查询中。我检查了我可以从数据库读取行,但我无法插入,它说“successfully register”,但当我检查数据库时,没有更改hanks,但当我使用此代码时,它没有打印“成功注册”和相同的问题。首先检查mysql是连接状态,使用connection_status()是否连接,如果connection_status()返回1,则表示其连接正确,然后回显您的查询,并尝试在sql或此处的注释中运行它(在回显复制并粘贴为注释后),而此代码段可能会解决问题,真正有助于提高您的帖子质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
$sql = "INSERT INTO users (name,username,password,status,picture) VALUES ('$name','$uname','$pass',0,'$picture')";
<?php
//your values from post I just assign test for all
$username = 'test';//mysql_real_escape_string($_POST['username']);
$password = 'test';//mysql_real_escape_string($_POST['password']);
$firstname = 'test';//mysql_real_escape_string($_POST['firstname']);
$lastname = 'test';//mysql_real_escape_string($_POST['lastname']);
$email = 'test';//mysql_real_escape_string($_POST['email']);
$dateofbirth= 'test';//mysql_real_escape_string($_POST['dateofbirth']);
$bool = true;
//database connection
$servername = "localhost";
$username1 = "root";
$password1 = "";
$db = 'test_001';
// Create connection
$conn = new mysqli($servername, $username1, $password1, $db);
$result = $conn->query("SELECT * FROM users");
while($row = $result->fetch_assoc())
{
$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')");
$query = "INSERT INTO users (username,password,email,firstname,lastname,dateofbirth) VALUES ('$username','$password','$email','$firstname','$lastname','$dateofbirth')";
$x = $conn->query($query);
if ($x)
Print '<script>alert("Successfully Registered!");</script>';
Print '<script>window.location.assign("Register.php");</script>';
}
$sql = "INSERT INTO users (name,username,password,status,picture) VALUES ('$name','$uname','$pass',0,'$picture')";