Проблема с insert Код (Text): $stmt = $pdo->prepare("insert into body_price (price_group, price_item, name) VALUES ( :param_group , :param_item) "); $stmt->bindValue("param_group" , 0, PDO::PARAM_INT); $stmt->bindValue("param_item", 0, PDO::PARAM_INT); $stmt->execute(); В такую табличку Код (Text): create table body_price ( id int not null auto_increment primary key, price_group int null, price_item int null, name varchar(250) null, constraint body_price_id_uindex unique (id), constraint body_price_group___fk foreign key (price_group) references body_price_group (id), constraint body_price_item____fk foreign key (price_item) references body_price_item (id) ) ; create index body_price_group___fk on body_price (price_group) ; create index body_price_item____fk on body_price (price_item) ; В price_group и price_item в id есть нули через консоль всё инсертица из php нет. Что может быть не так?
так это, друг, ты двоеточия потерял PHP: $stmt->bindValue(":param_group" , 0, PDO::PARAM_INT); первое, что в глаза бросилось
Спасибо, я в общем разобрался, PDO работает иначе в циклах, prepare надо выносить за пределы цикла иначе просто не работает. Всем спасибо, тему можно закрывать.
@acho, @ban_zay, мне вот первым, что в "глаза бросилось" было несоответствие количества перечисленных колонок таблицы и значений в values...
Всё верно, очепятка... Не нашел как отредактировать пост. --- Добавлено --- Сделал вот так, всё работает... Может кто подскажет нужно ли использовать closeCursor() с MySQL ? PHP: $stmt_insert = $pdo->prepare("INSERT INTO body_price (price_group, price_item, name) VALUES (:price_group ,:price_item,:name )"); $test_stmt = $pdo->prepare("SELECT * FROM body_price WHERE price_group = :price_group AND price_item = :price_item"); $stmt_update = $pdo->prepare("UPDATE body_price SET name = :name WHERE price_group = :price_group AND price_item = :price_item "); $stmt_del = $pdo->prepare("DELETE FROM body_price WHERE price_group = :price_group AND price_item = :price_item "); if (isset($_POST['arr_val'])) { foreach ($_POST['arr_val'] as $key => $value) { $x = $key; $y = 0; foreach ($value as $str) { $test_stmt->execute(array("price_group" => $x, "price_item" => $y)); if ($test_stmt->rowCount() <= 0) { if (!empty($str)) { $stmt_insert->execute(array("price_group" => $x, "price_item" => $y, "name" => $str)); $stmt_insert->closeCursor(); } } else { $test_row = $test_stmt->fetch(PDO::FETCH_ASSOC); if (empty($str)) { $stmt_del->execute(array("price_group" => $x, "price_item" => $y)); } elseif (trim($test_row['name']) != trim($str)) { $stmt_update->execute(array("name" => $str, "price_group" => $x, "price_item" => $y)); $stmt_update->closeCursor(); } } $test_stmt->closeCursor(); $y++; } } }