在PDO插入上的数组到字符串

时间:2017-12-11 20:54:25

标签: php mysql

我有一个数组,其中包含一个insertId(作为键)的其他几个值;这需要以$ key =>提交。 $ value数组(例如1 => 2,1 => 3,> 5)等。

但是,当我在foreach循环中绑定参数时,我不断得到一个数组到字符串转换错误。结果我得到一行插入db(正确的键,然后是0)。

function instructorSubject()
{

    $query = "INSERT into instructor_has_subject
            SET instructor_id =  :instructor_id,
            subject_id = :id";

    $last_id = $this->conn->lastInsertId(); 


    $stmt = $this->conn->prepare($query);

    //print_r($last_id);

    //print_r($this->id);
    if (isset($this->id) && $this->id != '') {
        foreach ($_POST as $values) {
            $stmt->bindParam(":instructor_id", $last_id, PDO::PARAM_INT);
            $stmt->bindParam(":id", $this->id, PDO::PARAM_INT);
        }

        if($stmt->execute())
        {
            return true;
        }
        else
        {
            var_dump($stmt);
            print_r($stmt->errorInfo());
            return false;
        }
    }

}

示例数组是这样的: 插入ID:87 然后第二个数组显示为直接键=>值对(例如:)  ([0] => 1 [1] => 3)

我觉得这与我在foreach中绑定的地方有关。提前感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

在聊天中与您交谈后,这是我们提出的解决方案。

function instructorSubject()
{

    $query = "INSERT INTO instructor_has_subject (instructor_id, subject_id) VALUES (?,?)";

    $last_id = $this->conn->lastInsertId();

    $stmt = $this->conn->prepare($query);

    if(!empty($this->id)) {
        foreach($_POST['subject_id'] as $id) {                
            $stmt->execute(array(
                $last_id,
                $id
            ));
        }
    }
}

我认为我们改变的主要内容是将$_POST更改为$_POST['subject_id']

我们还从函数中完全删除了bindParam,而是选择了未命名的参数,并通过循环内的execute()传递变量。