#php #mysql
#php #mysql
Вопрос:
Я пытаюсь ВЫБРАТЬ данные из одной таблицы на основе идентификатора, а затем вставить возвращенные данные в другую таблицу.
Мой код:
<?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 Fatal error: вызов функции-члена
bind_param() для boolean
Что не так с моим кодом?
Комментарии:
1. что такое
$stmt->bind_result($id, $coursetitle);
? Это после инструкции execute?
Ответ №1:
вы можете выполнить оба действия (select и insert) в одном запросе. Что-то вроде этого:
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 могут быть любыми, например string, php variable или подвыборкой statment, например:
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'"
Комментарии:
1. Это работает, но в таблице distributor_course_settings есть столбец distributor, и я хочу вставить в него переменную $distributor, как бы мне это тоже сделать?
2. Ну, на данный момент я вставляю только в 3 столбца в distributor_course_settings, мне нужно вставить данные и в столбец distributor.
3. Я обновил свой ответ, но ответ на ваш вопрос зависит от того, откуда берется значение distributer: в переменной или просто строке, или из другого запроса…
4. Это установленная переменная $distributor = «Company», которая устанавливается в верхней части страницы.