Я пытался записать новые данные, то есть вставить, в базу данных Amazon Redshift, используя PDO в PHP. База данных — это только красное смещение, а не MySQL или PostGRESQL. Мне удалось подключиться и сделать простой выбор * и распечатать результаты с помощью PDO, но я не могу записать данные в базу данных. Я также был в состоянии читать и вставлять с ODBC_prepare / odbc_execute, поэтому я не думаю, что это проблема настройки базы данных, но ошибки, которые я получаю, не имеют смысла.
Я получаю эту ошибку, когда пробую свой код, и нигде не нашел ссылки на эту ошибку:
Uncaught PDOException: SQLSTATE [HY000]: общая ошибка: 10920 [Amazon] [ODBC] (10920) Невозможно получить данные из входного параметра, значение которого уже было перенесено.
Я пробовал это:
$column_id_number= 9999;
$column2= "IGOT99PDOISSUES";
$query = 'INSERT into table (column_id_number, column2) VALUES (:column_id_number, :column2)';
$stmt = $pdo->prepare($query);
$stmt->bindParam(':column_id_number', $column_id_number, PDO::PARAM_INT);
$stmt->bindParam(':column2', $column2, PDO::PARAM_STR);
$result = $stmt->execute();
И я попробовал 2 синтаксиса запросов diff:
$query = 'INSERT into table (column_id_number, column2) VALUES (:column_id_number, :column2)';
//$query = 'INSERT into web_app.stg_wellness_random (column_id_number, column2) VALUES (?,?)';
$stmt = $pdo->prepare($query);
$stmt->execute([':column_id_number' => $column_id_number, 'column2' => $column2]);
Я думал о том, чтобы придерживаться запросов ODBC, но я хочу использовать PDO, потому что кажется, что это просто лучшая практика, и подготовленные операторы являются хорошей защитой от внедрения SQL. Кажется, что ODBC_prepare / execute не имеет подготовленных операторов или не делает ничего против SQL-инъекции? (Я был бы признателен, если бы кто-нибудь мог уточнить это, все, что я гуглил, расплывчато).
(Я не эксперт по бэкэнду, поэтому прошу прощения за неточный вокаб).
Задача ещё не решена.
Других решений пока нет …