我有一个注册表单。创建表单后,数据将一次性插入到注册表中,登录表单后,我需要填写一些详细信息并通过比较邮件ID插入到相同的列中。但是当我尝试插入数据时,它显示为未插入数据库。
仪表板.php:
<form method="post" action="personalinfo.php" id="myform">
<input type='hidden' value="<?php echo $_GET['email'];?>" name='email'>
<div>
<label for="first-name">First Name<span class="mandatory">*</span></label>
<input id="first-name" type="text" name="first-name" value="" />
</div>
<button type="submit" id = "submit" class="btn btn-success btn-block"><span class="glyphicon glyphicon-off"></span> Save</button>
个人信息.php:
<?php
$connection = mysql_connect("localhost", "root", "") or die(mysql_error());
$db = mysql_select_db("accountant", $connection);
$email=$_POST['email'];
$firstname = $_POST['first-name'];
$query = mysql_query("INSERT INTO registered (first-name)
values ('$firstname') SELECT email FROM registered WHERE email!='$email' ");
mysql_query("$query") OR die("Error:".mysql_error());
if($query)
{
echo "Successfully Registered";
}
else{
echo "Registration has not been completed.Please try again";
}
?>
如果我使用mysql_error它显示为查询为空。
登录表格后,我需要填写一些详细信息
根据此行,这意味着您要更新同一行中的名字。您可以使用此查询。
(在评论和其他答案中也提到)
UPDATE registered SET first-name = '$firstname' WHERE email = '$email'
其他问题:
代码中还有其他一些问题:
- 使用
mysql_*
扩展,其已弃用,请使用mysqli_*
或PDO
。 - 无需使用查询功能,
mysql_query("$query")
应该mysql_query($query)
; - 给
mysql_query
打了两次电话。 - 为 SQL 注入打开的代码。
- 最后一件事,也是最重要的,没有检查表单提交与否,如果我直接点击此文件
personalinfo.php
它将在您的表中插入空记录。
旁注:
这只是一个建议,请使用下划线(_)
而不是连字符(-)
作为表或列名称。
这是您的完整答案集和评论。
<?php
$connection = mysql_connect("localhost", "root", "") or die(mysql_error());
$db = mysql_select_db("accountant", $connection);
$email=$_POST['email'];
$firstname = $_POST['first_name'];
// CHECK IF THE EMAIL IS ALREADY REGISTERED PREVIOUSLY
$res = mysql_query("SELECT email FROM registered WHERE email='$email");
if(!$res || mysql_num_rows($res)<1){ // IF NOT THEN ADD THE RECORD
$query = mysql_query("INSERT INTO registered (first_name, email) values ('$firstname', '$email')") OR die("Error:".mysql_error());
}else{ // if email already present then update the record
$query = mysql_query("UPDATE registered SET first_name='$firstname'" where email= '$email') OR die("Error:".mysql_error());
}
if($query)
{
echo "Successfully Registered";
}
else{
echo "Registration has not been completed.Please try again";
}
}
试试这个:
$query = mysql_query("update registered set first-name = '$firstname' where email = '$email'");
这将满足您正在寻找的内容。
$connection = mysql_connect("localhost", "root", "") or die(mysql_error());
$db = mysql_select_db("accountant", $connection);
$email=$_POST['email'];
$firstname = $_POST['first-name'];
$res = mysql_query("SELECT email FROM registered WHERE email='$email");
if(!$res || mysql_num_rows($res)<1){
$query = mysql_query("INSERT INTO registered (first-name, email) values ('$firstname', '$email')") OR die("Error:".mysql_error());
// mysql_query("$query") OR die("Error:".mysql_error());
if($query)
{
echo "Successfully Registered";
}
else{
echo "Registration has not been completed.Please try again";
}
}
试试这个:
登录后,您可以通过以下方式插入数据
$query = mysql_query("update registered set first-name = '$firstname' where email = '$email'");
这是
正确答案
<?php
$connection = mysql_connect("localhost", "root", "") or die(mysql_error());
$db = mysql_select_db("accountant", $connection);
$email=$_POST['email'];
$firstname = $_POST['first_name'];
$res = mysql_query("SELECT email FROM registered WHERE email='$email");
if(!$res || mysql_num_rows($res)<1){
$query = mysql_query("UPDATE registered SET first_name='$firstname'") OR die("Error:".mysql_error());
// mysql_query("$query") OR die("Error:".mysql_error());
if($query)
{
echo "Successfully Registered";
}
else{
echo "Registration has not been completed.Please try again";
}
}
像这样使用你的查询:
$query = mysql_query("UPDATE registered set first-name = '$firstname'
WHERE email = '$email'");
在这里,这会将名字值更新为电子邮件等于$email值的行中的$firtname值。有关更多详细信息,请查看此网址:http://www.w3schools.com/php/php_mysql_update.asp