[英]Insert values into DB not working?
大家好,我之前也遇到过类似的问题,但是我放弃了这个想法。 现在,基本上,我的系统允许我的用户将数据输入到字段中,如果他们提交了该信息,则该信息将进入数据库。 现在由于某种原因数据无法保存,并且我收到了存储在我的else语句中的回显,该回显为“ echo”,请稍后再试。“;”
现在,我回到数据库中,查看所有文件,并找到正确的名称,并将其放入查询中,但没有任何内容存储到数据库中。 现在您可能正在考虑在我的代码中最上面的名为connect.inc.php的文件是什么,这基本上是php中连接到服务器的脚本。
这是我的代码请看看谢谢:)
<?php
//require 'core.inc.php';
include 'connect.inc.php';
if(isset($_POST['Username'])&& isset($_POST['Password']) && isset($_POST['PasswordAgain'])&& isset($_POST['Firstname'])&& isset($_POST['Lastname'])){
$username = $_POST['Username'];
$password = $_POST['Password'];
$password_again = $_POST['PasswordAgain'];
$Firstname = $_POST['Firstname'];
$password_hash = md5($password);
$Lastname = $_POST['Lastname'];
if(!empty($username)&& !empty($password) && !empty($password_again) && !empty($Firstname) && !empty($Lastname)){
if ($password !== $password_again) {
echo "passwords do not match";
}
else{
$query = "SELECT username FROM members WHERE username = '$username'";
$query_run = mysql_query($query);
if(mysql_num_rows($query_run )==1){
echo "The username ". $username ." is taken";
}else{
$query = "INSERT INTO members VALUES ('','Firstname','Lastname','Username','Password')";
if ($query_run = mysql_query($query)){
echo "Well done";
}else{
echo "Sorry we couldn't register at this time. Please try again later thank you";
}
}
}
}
else{
echo "Please fill in all the details thank you ";
}
}
?>
<form action="join.inc.php" method="post">
Username: <input type="text" name="Username" value="<?php echo $username; ?>" /><br />
Password: <input type="password" name="Password" /><br />
Password Again: <input type="password" name="PasswordAgain" /><br />
FirstName: <input type="text" name ="Firstname" value="<?php echo $Lastname; ?>" /><br />
LastName: <input type="text" name ="Lastname" value="<?php echo $Firstname ?>" /><br />
<input type="submit" value="SUBMIT" />
</form>
连接脚本
我建议您明确声明INSERT语句中使用的列。
INSERT INTO members (`field1`, `field2`, ...)
VALUES ('','Firstname','Lastname','Username','Password')
另外,您要插入的空白值是多少? 如果该字段是AUTO_INCREMENT
字段,则不应将其包括在VALUES
声明中。
尝试这个 :
INSERT INTO members (`field1`, `field2`, ...)
VALUES ('','$Firstname','$Lastname','$Username','$password_hash')
您应该使用这样的东西。
$query = "insert into members (id,username) values ('','$username')";
如果您的第一个字段是auto_increment
省略field1,如下所示
INSERT INTO members (`field2`,`field3`,...)
VALUES ('field2Val','field3Val',...);
password !== $password_again
应该
password != $password_again
尝试更改为:
$query = "INSERT INTO members VALUES ('". $Firstname."','". $Lastname. "','" .$username. "','" .$password_hash. "')";
$result = mysql_query($query);
if (!$result){
echo "Sorry we couldn't register at this time. Please try again later thank you";
}else{
echo "Well done";
}
启用error_reporting并查看实际出了什么问题,ID第一字段是否自动递增?
如果那是自动递增,您的查询将执行,但如果不是自动递增并设置为PK,则不会插入记录并引发重复键错误。
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.