Вставка массива через PDO в базу данных MySQL с PHP не работает для меня. Он говорит «неверный номер параметра», хотя массив имеет 41 значение; PDO называет 41 столбец; и подготовленный запрос имеет 41 вопросительный знак.
Массив имеет 41 значение (я проверял с помощью var_dump), например:
$data = [
'countrycode' => $_GET["id"],
'country' => $_GET["country"],
'region' => $_GET["region"],
'law_db_region' => $_GET["law_db_region"],
[... etc ...]
]
Мой код PDO следующий (да, это 41 столбец и 41 знак вопроса):
$sql = "INSERT INTO awards_country
(countrycode, country, region, law_db_region, law_db_national,
law_db_national2, const_url, const_version, const_date, const_dummy,
const_article, const_wording, const_article2, const_wording2, const_article3,
const_wording3, law_dummy, law_act, law_article, law_source,
law_date, law_act2, law_article2, law_source2, law_date2,
law_act3, law_article3, law_source3, law_date3, web_dummy,
web_url, web_organ, web_language, web_date, web_url2,
web_organ2, web_language2, web_date2, wikipedia_url, wikipedia_date,
comment)
VALUES (
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
)";
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare($sql);
$stmt->execute($data);
Я все же получаю ошибку:
Неустранимая ошибка: необработанное исключение PDO: SQLSTATE [HY093]: неверный параметр
номер: параметр не был определен в [...] country-insert.php: 99
Трассировка стека: # 0 [...] country-insert.php (99):
PDOStatement-> execute (Array) # 1 {main} добавляется
/data/web/e96483/html/awards/country-insert.php в строке 99