###前提・実現したいこと
phpで「ショッピングカート作りにチャレンジ!」という本でカートを作っています。
一番最後の会員登録で躓いています。
カートを完成させたいです。
###発生している問題・エラーメッセージ
本の通りにそのままのデータでやっています。
データベースだけはXAMPPではなく、実サーバーです。
データベースは繋がっています。商品追加等は出来ているので、
エラーですがエラートラップをコメントアウトしてみたところ
このようなエラーが出ました。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1100 Table 'dat_member' was not locked with LOCK TABLES' in /home/hanacocoro/hanacocoro.jp/public_html/msm/shop_form_done.php:104 Stack trace: #0 /home/hanacocoro/hanacocoro.jp/public_html/msm/shop_form_done.php(104): PDOStatement->execute(Array) #1 {main} thrown in /home/hanacocoro/hanacocoro.jp/public_html/msm/shop_form_done.php on line 104
104行目は$stmt->execute($data);です。
まだまだ経験が浅く分かりません。
分かる方がいらっしゃいましたら、どうぞ宜しくお願い致します。
前後のコードになります。宜しくお願いします。
for($i=0;$i<$max;$i++)
{
$sql='SELECT name,price FROM mst_product WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[0]=$cart[$i];
$stmt->execute($data);
$rec=$stmt->fetch(PDO::FETCH_ASSOC); $name=$rec['name']; $price=$rec['price']; $kakaku[]=$price; $suryo=$kazu[$i]; $shokei=$price*$suryo; $honbun.=$name.' '; $honbun.=$price.'円 x '; $honbun.=$suryo.'個 = '; $honbun.=$shokei."円\n";
}
$sql='LOCK TABLES dat_sales WRITE,dat_sales_product WRITE';
$stmt=$dbh->prepare($sql);
$stmt->execute();
$lastmembercode=0;
if($chumon=='chumontouroku')
{
$sql='INSERT INTO dat_member (password,name,email,postal1,postal2,address,tel,danjo,born) VALUES (?,?,?,?,?,?,?,?,?)';
$stmt=$dbh->prepare($sql);
$data=array();
$data[]=md5($pass);
$data[]=$onamae;
$data[]=$email;
$data[]=$postal1;
$data[]=$postal2;
$data[]=$address;
$data[]=$tel;
if($danjo=='dan')
{
$data[]=1;
}
else
{
$data[]=2;
}
$data[]=$birth;
$stmt->execute($data);
$sql='SELECT LAST_INSERT_ID()'; $stmt=$dbh->prepare($sql); $stmt->execute(); $rec=$stmt->fetch(PDO::FETCH_ASSOC); $lastmembercode=$rec['LAST_INSERT_ID()'];
}
$sql='INSERT INTO dat_sales (code_member,name,email,postal1,postal2,address,tel) VALUES (?,?,?,?,?,?,?)';
$stmt=$dbh->prepare($sql);
$data=array();
$data[]=$lastmembercode;
$data[]=$onamae;
$data[]=$email;
$data[]=$postal1;
$data[]=$postal2;
$data[]=$address;
$data[]=$tel;
$stmt->execute($data);
$sql='SELECT LAST_INSERT_ID()';
$stmt=$dbh->prepare($sql);
$stmt->execute();
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$lastcode=$rec['LAST_INSERT_ID()'];
for($i=0;$i<$max;$i++)
{
$sql='INSERT INTO dat_sales_product (code_sales,code_product,price,quantity) VALUES (?,?,?,?)';
$stmt=$dbh->prepare($sql);
$data=array();
$data[]=$lastcode;
$data[]=$cart[$i];
$data[]=$kakaku[$i];
$data[]=$kazu[$i];
$stmt->execute($data);
}
$sql='UNLOCK TABLES';
$stmt=$dbh->prepare($sql);
$stmt->execute();
$dbh=null;
回答1件
あなたの回答
tips
プレビュー