php
<?php session_start(); session_regenerate_id(true); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <?php require_once('../common/common.php'); $post=sanitize($_POST); try{ $onamae=$post['onamae']; $email=$post['email']; $postal1=$post['postal1']; $postal2=$post['postal2']; $address=$post['address']; $tel=$post['tel']; echo $onamae.'様<br/>'; echo'ご注文ありがとうございました。<br/>'; echo$email.' にメールを送りましたのでご確認ください。<br/>'; echo'商品は以下の住所に発送させていただきます。<br/>'; echo $postal1.'-'.$postal2.'<br/>'; echo $address.'<br/>'; echo $tel.'<br/>'; $honbun=''; $honbun.=$onamae."様\n\nこの度はご注文ありがとうございました。\n"; $honbun.="\n"; $honbun.="ご注文内容\n"; $honbun.="----------\n"; $cart=$_SESSION['cart']; $kazu=$_SESSION['kazu']; $max=count($kazu); $dsn='mysql:dbname=shop;host=localhost;charset=utf8'; $user='root'; $password=''; $dbh=new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); for($i=0;$i<$max;$i++){ $sql='SELECT name,price FROM mst_product WHERE code=?'; $stmt=$dbh->prepare($sql); $data=[]; $data[]=$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.'円×'; $honbun.=$suryo.'個='; $honbun.=$shokei."円\n"; } $sql='LOCK TABLES dat_sales WRITE,dat_sales_product WRITE'; $stmt=$dbh->prepare($sql); $stmt->execute(); $sql='INSERT INTO dat_sales(code_member,name,email,postal1,postal2,address,tel) VALUES(?,?,?,?,?,?,?)'; $stmt=$dbh->prepare($sql); $data=array(); $data[]=0; $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; $honbun.="送料は無料です。\n"; $honbun.="-------------"; $honbun.="\n"; $honbun.="代金は以下の口座にお振り込みください\n"; $honbun.="銀行 00000\n"; $honbun.="入金確認が取れ次第、発送させていただきます。\n"; $honbun.="〜安心野菜ろくまる園〜\n"; $honbun.="\n"; $honbun.="東京都123-4\n"; $honbun.="電話:000-4444-3333\n"; $honbun.="メール:info@inini.com\n"; //echo'<br/>'; //echo nl2br($honbun); //↓メールを送信するシステム p248 お客側のメール $title='ご注文ありがとうございます'; $header='From:info@inini.com';//送信元 $honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8'); mb_language('japanese'); mb_internal_encoding('UTF-8');//mb_language('japanese');mb_internal_encodingこの形のまま覚える mb_send_mail($email,$title,$honbun,$header); //mb_send_mail(宛先, 件名, メッセージ, ヘッダ):https://techplay.jp/column/550 //↓メールを送信するシステム p248 お店側のメール $headerに注目 $title='お客様からご注文がありました。'; $header='From:'.$email; $honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8'); mb_language('japanese'); mb_internal_encoding('UTF-8');//mb_language('japanese');mb_internal_encodingこの形のまま覚える mb_send_mail('info@inini.com',$title,$honbun,$header); //mb_send_mail(宛先, 件名, メッセージ, ヘッダ):https://techplay.jp/column/550 }catch(PDOException $e){ exit($e->getMessage()); } ?> </body> </html>
「SQLSTATE[42000]: Syntax error or access violation: 1044」というエラーについて質問です。
sql
$sql='LOCK TABLES dat_sales WRITE,dat_sales_product WRITE'; $stmt=$dbh->prepare($sql); $stmt->execute(); _____________ $sql='UNLOCK TABLES'; $stmt=$dbh->prepare($sql); $stmt->execute();
上記のコードを」書く前は正常にデータがDBに入っていたのですが、上記のコードを書いてから実行しようとすると「SQLSTATE[42000]: Syntax error or access violation: 1044」このようなエラーが出ます。
エラーの内容は、「権限を持っていない」ということだとわかりましたが、なぜ上記のコードを書く前は正常に機能したのに、上記のコードを書いた途端にエラーが出るのでしょうか?
また、いろいろ試しましたが効果がありませんでした。解決のヒントをご教授願います。
________________________________________________
試したこと
https://qiita.com/mako0104/items/63784abab061e587d6c5
こちらの記事を参考にしてみましたが、うまくいきませんでした。
上記の記事を参考にしたところ「zsh: no matches found:」ここのようになり、「https://qiita.com/nisaji/items/f9eede2164a74bc08db7」この記事を参考にしましたが、うまくいきませんでした。
他にも同じような質問あり、真似てみたのですが、解決できませんでした。皆様のお力を借りられたら幸いです。ご教授の方をよろしくお願いいたします。

まだ回答がついていません
会員登録して回答してみよう