У меня есть следующие два блока кода, служащие одной и той же цели (по мне), но последний не работает, как задумано. Следующий код выполняется так, как было задумано. Все изменения отражены в базе данных, как и ожидалось.
$sql = 'INSERT INTO lesson_plan (class_date, v_id_lp) VALUES(:class_date, :v_id_lp)';
$this->query_new($sql);
$class_date_string = 'class_date';
$id_string = 'v_id_lp';
$class_date = '05-May-2020';
$id = '6';
$this->stmt->bindValue(':' . $class_date_string, $class_date);
$this->stmt->bindValue(':' . $id_string, $id);
$this->stmt->execute();
Но вышеупомянутые имена столбцов после table_name
- просто капля воды в могучем океане по сравнению с другими запросами в моем приложении, и я не хочу переписывать все bindValue()
несколько раз, как указано выше. Итак, я разделил (или попытался) l oop, над которым я пытался работать со вчерашнего дня, но безуспешно. Следующий код возвращает ошибку Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in 'File path' on 'line number'.
$sql = 'INSERT INTO lesson_plan (class_date, v_id_lp) VALUES(:class_date, :v_id_lp)';
$this->query_new($sql);
$some_array = ['class_date' => '06-May-2020','id' => '6'];
foreach(array_keys($some_array) as $string){
$this->stmt->bindValue(':' . $string, array_values($some_array));
}
$this->stmt->execute();
Я прочитал несколько похожих вопросов о переполнении стека (некоторая информация для тех, кто хочет sh закрыть мой вопрос), но, будучи новичком, я этого не сделал понять любой из этих ответов. Теперь, если кто-то хочет помочь, пожалуйста, сделайте, если кто-то все еще не может ответить на вопрос sh, не стесняйтесь делать (как вы всегда делаете), но знайте, что не все студенты-медики кодируют во время блокировки, особенно когда у них есть не разбираясь в кодировании, по крайней мере прокомментируйте ошибку в моем коде, прежде чем закрыть мой вопрос, это было бы очень полезно.