前提・実現したいこと
PHPで
sub.phpからmain.phpへpostし
updateでhogeテーブルの内容をまとめて変更したいです。
その他は初期値のままで
hoge_idが1の列のhoge_stockが8になった時
hoge_idが1の列のhoge_stockだけが8に更新されるという処理です。
因みに各hoge_stockはjsで変更できるものとします。
発生している問題・エラーメッセージ
このままpostするとmain.phpでArray to string convertionとなりupdateできませんでした。
型がダメなのかとはにらんでいますがよくわからず...。
main.php
php
1<?php 2$db = new PDO('mysql:host=localhost;dbname=main;charset=utf8', 'root', 'admin'); 3$stmt = $db->prepare("update hoge set hoge_stock = :stock where hoge_id = :id"); 4$stmt->execute(array(":stock" => $_POST['stock'], ":id" => $_POST['id'])); 5?>
sub.php
php
1<form action='main.php' method='post'> 2<?php 3$db = new PDO('mysql:host=localhost;dbname=main;charset=utf8', 'root', 'admin'); 4$stmt = $db->prepare("select * from hoge"); 5$stmt->execute(); 6 7while($abc = $stmt->fetch()){ 8 print "<input type='hidden' name='stock[]' value=".$result['hoge_stock'].">"; 9 print "<input type='hidden' name='id[]' value=".$result['hoge_id'].">"; 10} 11$bd = null; 12?> 13<input type="submit"> 14</form>
試したこと
main.phpの
$stmt->execute(array(":name" => $_POST['hoge_stock'], ":id" => $_POST['hoge_id'])); を
$stmt->execute(array(":name" => (int)$_POST['hoge_stock'], ":id" => (int)$_POST['hoge_id']));
と、型を変換してみたところエラーは出ませんが、hoge_idのstockのみ変更され、
値が1となるだけでした
補足情報(FW/ツールのバージョンなど)
hogeテーブルの情報↓(初期値)
create table hoge(hoge_id char(1), hoge_name varchar(100), hoge_stock varchar(30));
hoge_id hoge_name hoge_stock
1 hoge1 10
2 hoge2 10
3 hoge3 10
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/29 21:19
2021/01/30 04:17
2021/01/30 09:50