#mysql #pdo
#mysql #pdo
Вопрос:
У меня есть ассоциативный массив, содержащий несколько строк, например, следующим образом:
Array
(
[0] => Array
(
[ID] => 37
[category name] => Cell Phone
)
[1] => Array
(
[ID] => 38
[category name] => LED Light
)
и так далее…
У меня есть следующая функция для вставки данных в мою базу данных с использованием PDO.
function PDOBindArray($poStatement, $paArray){
foreach ($paArray as $k=>$v){
$poStatement->bindValue(':'.$k,$v);
}
}
и вот мой оператор insert:
$stmt = $conn->prepare("INSERT INTO subcategory (cb_category_id,subcategory_name) VALUES (:ID,:category name)");
PDOBindArray($stmt,$data);
$stmt->execute();
Я получаю следующую ошибку во время вставки:
Недопустимый номер параметра: количество связанных переменных не соответствует количеству токенов
Я знаю, что это что-то глупое. Но я не могу его найти…
Комментарии:
1.
:category name
должно быть:category_name
и то же самое в массиве.2. можем ли мы использовать кавычки?? я попробовал, но это не увенчалось успехом. Я получаю этот массив из внешнего источника, преобразованный из файла csv.. Есть ли другой способ
3.
str_replace(' ', '_', $k)
?4. str_replace(‘ ‘, ‘_’, $ v) Недопустимый номер параметра: количество связанных переменных не соответствует количеству токенов
5. У вас также есть несколько других проблем
Ответ №1:
$sql = "INSERT INTO subcategory (cb_category_id,subcategory_name) VALUES (?,?)";
$stmt = $conn->prepare($sql);
foreach ($paArray as $v){
$stmt->execute(array_values($v));
}