在mysqli预处理语句

时间:2015-11-28 10:32:12

标签: php mysql

我有3个mysql表“users”,“banks”和“user_bank”。每个用户必须至少有一个银行,最多只有两个。

当用户注册到系统时,我还需要将银行详细信息插入user_bank表。

这是我尝试的方式:

$success=FALSE; 

if($success == FALSE) {
    $query = "INSERT INTO user_bank ( 
                                  beneficiary_id
                                , beneficiary_bank_id
                                , branch_id
                                ) VALUES (?, ?, ?)";
    $stmt = $mysqli->prepare($query);           
    $stmt->bind_param('iii', $lastInsertId
                           , $bank_one
                           , $branchId_one
                     ); 
    $stmt->execute();

    if ($stmt->affected_rows == 1) {                        
        $success=TRUE; 

        if(!empty($bank_two) && !empty($branchId_two)) {

            $query = "INSERT INTO user_bank ( 
                                            id
                                            , bank_id
                                            , branch_id
                                            ) VALUES (?, ?, ?)";
            $stmt = $mysqli->prepare($query);           
            $stmt->bind_param('iii', $lastInsertId
                                   , $bank_two
                                   , $branchId_two
                             ); 
            $stmt->execute();   
            $success=TRUE; 
        }
    }
}

if ($success == TRUE) {
    $messages = array('success'=>true, 'message'=>'You successfully registered.');
}  

我的问题是,有人可以告诉我,我有办法使用单个查询吗?如果是这样怎么做?

希望有人可以帮助我。 谢谢。

1 个答案:

答案 0 :(得分:1)

您需要学习阅读MySQL手册。如果您查看INSERT定义,可以在VALUES规范中找到它:

使用VALUES语法的INSERT语句可以插入多行。为此,请包含多个列值列表,每个列值都括在括号内并用逗号分隔。例如:

INSERT INTO tbl_name(a,b,c)VALUES(1,2,3),(4,5,6),(7,8,9);