只应通过引用bind_param(PHP)传递变量

时间:2018-03-07 18:16:41

标签: php mysql mysqli prepared-statement

我正在尝试插入记录,但我的bind_param中出现错误?我错过了什么吗?

for($i = 0; $i < count($getbookauthorfname); $i++){
    if($getbookauthorfname[$i] != "" && $getbookauthormname[$i] != "" && $getbookauthorlname[$i] != "" ){
        $query = "INSERT INTO tbl_author (book_isbn, author_firstname, author_middlename, author_lastname) VALUES (? , ? , ? , ?)";
        $stmt = $mysqlconnection->prepare($query);
        $getbookauthorfname[$i] = htmlspecialchars(strip_tags($getbookauthorfname[$i]));
        $getbookauthormname[$i] = htmlspecialchars(strip_tags($getbookauthormname[$i]));
        $getbookauthorlname[$i] = htmlspecialchars(strip_tags($getbookauthorlname[$i]));

        $stmt->bind_param("ssss", $getbookisbn, $getbookauthorfname[$i], $getbookauthormname[$i],   $getbookauthorlname[$i]);
        $stmt->execute();
    }
}

2 个答案:

答案 0 :(得分:0)

正如错误所述,bind_param只接受变量。你传递了一个数组项,所以它不会工作。

请改为尝试:

//...
$fname = htmlspecialchars(strip_tags($getbookauthorfname[$i]));
$mname = htmlspecialchars(strip_tags($getbookauthormname[$i]));
$lname = htmlspecialchars(strip_tags($getbookauthorlname[$i]));

$stmt->bind_param("ssss", $getbookisbn, $fname, $mname, $lname);
//...

答案 1 :(得分:0)

我设法回答我自己的问题,我忘了将数组存储放到我的文本框中,这就是为什么我得到错误。

<input type="text" class="form-control text-center" placeholder="First Name" id="author_fname[]" name="author_fname[]" required >