使用一个数组选择多行,然后插入到另一个语句


SELECTING Multiple Rows with an Array and then INSERT to another statement

我试图根据ID从一个表中选择数据,然后将返回的数据插入到另一个表中。

我的代码是:
<?php
    require '../../db-config.php';
    if(isset($_POST['course'])) {
        $selected_courses = '('. implode(',', $_POST['course']) .')';
        $status = 'Live';
        $active = 'Y';
        $stmt = "SELECT id, coursetitle FROM courses WHERE id IN ". $selected_courses ." 
                 AND status = ?";
        $stmt = $conn->prepare($stmt);
        $stmt->bind_param('i', $selected_courses);
        $stmt->execute();
        $stmt->bind_result($id, $coursetitle);
        while($stmt->fetch()) {
            $stmt = $conn->prepare("INSERT INTO distributor_course_settings
                                  (id, active, coursetitle) VALUES (?, ?, ?)");
            $stmt->bind_param("iss", $id, $active, $coursetitle);
            $stmt->execute();
        }
    }
?>

我得到的错误是:PHP致命错误:调用一个成员函数Bind_param () on boolean

我的代码有什么问题?

您可以在一个查询中执行两个操作(选择和插入)。像这样:

INSERT INTO distributor_course_settings
(id, distributor, active, coursetitle) 
SELECT id, '$distributer', 'Y', coursetitle 
FROM courses 
WHERE id IN ". $selected_courses ." 
AND status = 'Live'

select语句中的值可以是字符串、PHP变量或子select语句,如:

   INSERT INTO distributor_course_settings
    (id, distributor, active, coursetitle) 
    SELECT id, (select distributer from distributor_course_settings where id = 12), 'Y', coursetitle 
    FROM courses 
    WHERE id IN ". $selected_courses ." 
    AND status = 'Live' 

,如果它是一个PHP变量,语句可以像这样:

 $stmt = "INSERT INTO distributor_course_settings
    (id, distributor, active, coursetitle) 
    SELECT id, '".$distributor."', 'Y', coursetitle 
    FROM courses 
    WHERE id IN ". $selected_courses ." 
    AND status = 'Live'"