插入&;使用php更新sql数据
我有一张注册表&如果ID不存在,我会尝试插入数据。工作正常。现在,如果“ID”已经存在,我将尝试更新数据。它根本不起作用&我找不到错误。以下是我设置的ID是否存在的条件:插入&;使用php更新sql数据,php,mysql,sql,Php,Mysql,Sql,我有一张注册表&如果ID不存在,我会尝试插入数据。工作正常。现在,如果“ID”已经存在,我将尝试更新数据。它根本不起作用&我找不到错误。以下是我设置的ID是否存在的条件: function staff_detail_exist($ic) { $result = null; $sql = "SELECT * FROM apply WHERE staffid = '$ic'"; $data = mysql_query($sql); if (mysql_num
function staff_detail_exist($ic) {
$result = null;
$sql = "SELECT * FROM apply WHERE staffid = '$ic'";
$data = mysql_query($sql);
if (mysql_num_rows($data) == 0) {
$result = "available";
} else {
$result = "exist";
}
return $result;
}
下面是我的插入和更新功能:
if (staff_detail_exist($ic) == "available") {
insert_staff_detail($ic, $name, $contact, $mail, $address, $paytype, $applicant);
echo "Workshop application successful! You will be notified shortly via E-mail after confirmation! Thank You!";
}
else if (staff_detail_exist($ic) == "exist") {
update_staff_detail($ic, $name, $contact, $mail, $address, $paytype);
echo "Staff Details Updated!" ;
}
function insert_staff_detail($ic, $name, $contact, $mail, $address, $paytype, $applicant) {
$sql = "INSERT INTO apply (staffid, staffname, staffno, staffemail, staffaddress, paytype, applicant) VALUES ('$ic', '$name', '$contact', '$mail', '$address','$paytype', '$applicant')";
mysql_query($sql);
}
function update_staff_detail($ic, $name, $contact, $mail, $address, $paytype){
$sql = "UPDATE apply
SET staffname='$_POST[name]',
staffno='$_POST[contact]',
staffmail='$_POST[mail]',
address='$_POST[address]',
paytype='$_POST[paytype]'
WHERE staffid='$_POST[ic]'";
mysql_query($sql);
}
有什么建议吗?谢谢 观察:您必须指出何时收到POST变量。
update\u staff\u detail
方法应该以与insert\u staff\u detail
方法相同的方式接收POST变量
更改:定义更新员工详细信息
至:
function update_staff_detail($ic, $name, $contact, $mail, $address, $paytype){
$sql = "UPDATE apply
SET staffname='$name',
staffno='$contact',
staffmail='$mail',
address='$address',
paytype='$paytype'
WHERE staffid='$ic' LIMIT 1";
mysql_query($sql);
}
注意。观察:您必须指出何时收到POST变量。
update\u staff\u detail
方法应该以与insert\u staff\u detail
方法相同的方式接收POST变量
更改:定义更新员工详细信息
至:
function update_staff_detail($ic, $name, $contact, $mail, $address, $paytype){
$sql = "UPDATE apply
SET staffname='$name',
staffno='$contact',
staffmail='$mail',
address='$address',
paytype='$paytype'
WHERE staffid='$ic' LIMIT 1";
mysql_query($sql);
}
注意。此代码容易受到sql注入攻击。在将数据插入数据库之前,不清理从用户获取的数据。顺便问一下,
update\u staff\u detail()
是否会忽略其参数并使用$\u POST
变量?这可能是您的问题吗?任何时候,您都需要确保对用户的信息进行清理。例如,他们可能会传入将所有表都放在数据库中的信息。请看一个开始的示例。@Atik我们不是您的“兄弟”。此代码容易受到sql注入攻击。在将用户的数据插入数据库之前,不清理这些数据。顺便问一下,update\u staff\u detail()
是否会忽略其参数并使用$\u POST
变量?这可能是您的问题吗?任何时候,您都需要确保对用户的信息进行清理。例如,他们可能会传入将所有表都放在数据库中的信息。看一个开始的例子。@Atik我们不是你的“兄弟”。也许一个LIMIT 1
非常适合这个。它可以帮助你输入从POST变量中接收的完整代码insert\u staff\u detail方法。我用它从以下位置获取值:`$ic=mysql\u real\u escape\u string($\u POST['ic'])$name=mysql\u real\u escape\u字符串($\u POST['name'])$contact=mysql\u real\u escape\u字符串($\u POST['contact'])$mail=mysql\u real\u escape\u字符串($\u POST['mail'])$address=mysql\u real\u escape\u字符串($\u POST['address'])$paytype=mysql\u real\u escape\u字符串($\u POST['paytype'])$申请人=mysql_real_escape_字符串($_POST['applicator'])`也许一个LIMIT 1
会非常适合这种情况。它可以帮助您输入从POST变量接收的完整代码insert\u staff\u detail方法。我使用它从以下位置获取值:`$ic=mysql\u real\u escape\u string($\u POST['ic'])$name=mysql\u real\u escape\u字符串($\u POST['name'])$contact=mysql\u real\u escape\u字符串($\u POST['contact'])$mail=mysql\u real\u escape\u字符串($\u POST['mail'])$address=mysql\u real\u escape\u字符串($\u POST['address'])$paytype=mysql\u real\u escape\u字符串($\u POST['paytype'])$申请人=mysql_real_escape_字符串($_POST['applicator'])`