Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入&;使用php更新sql数据_Php_Mysql_Sql - Fatal编程技术网

插入&;使用php更新sql数据

插入&;使用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

我有一张注册表&如果ID不存在,我会尝试插入数据。工作正常。现在,如果“ID”已经存在,我将尝试更新数据。它根本不起作用&我找不到错误。以下是我设置的ID是否存在的条件:

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'])`