php
1<?php 2session_start(); 3session_regenerate_id(true); 4?> 5<!DOCTYPE html> 6<html lang="en"> 7<head> 8 <meta charset="UTF-8"> 9 <title>Document</title> 10</head> 11<body> 12<?php 13require_once('../common/common.php'); 14$post=sanitize($_POST); 15try{ 16$onamae=$post['onamae']; 17$email=$post['email']; 18$postal1=$post['postal1']; 19$postal2=$post['postal2']; 20$address=$post['address']; 21$tel=$post['tel']; 22 23echo $onamae.'様<br/>'; 24echo'ご注文ありがとうございました。<br/>'; 25echo$email.' にメールを送りましたのでご確認ください。<br/>'; 26echo'商品は以下の住所に発送させていただきます。<br/>'; 27echo $postal1.'-'.$postal2.'<br/>'; 28echo $address.'<br/>'; 29echo $tel.'<br/>'; 30 31$honbun=''; 32$honbun.=$onamae."様\n\nこの度はご注文ありがとうございました。\n"; 33$honbun.="\n"; 34$honbun.="ご注文内容\n"; 35$honbun.="----------\n"; 36 37$cart=$_SESSION['cart']; 38$kazu=$_SESSION['kazu']; 39$max=count($kazu); 40 41$dsn='mysql:dbname=shop;host=localhost;charset=utf8'; 42$user='root'; 43$password=''; 44 45$dbh=new PDO($dsn,$user,$password); 46$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 47 48for($i=0;$i<$max;$i++){ 49 50$sql='SELECT name,price FROM mst_product WHERE code=?'; 51$stmt=$dbh->prepare($sql); 52$data=[]; 53$data[]=$cart[$i]; 54$stmt->execute($data); 55 56$rec=$stmt->fetch(PDO::FETCH_ASSOC); 57 58$name=$rec['name']; 59$price=$rec['price']; 60$kakaku[]=$price; 61$suryo=$kazu[$i]; 62$shokei=$price*$suryo; 63 64$honbun.=$name.''; 65$honbun.=$price.'円×'; 66$honbun.=$suryo.'個='; 67$honbun.=$shokei."円\n"; 68} 69 70$sql='LOCK TABLES dat_sales WRITE,dat_sales_product WRITE'; 71$stmt=$dbh->prepare($sql); 72$stmt->execute(); 73 74$sql='INSERT INTO dat_sales(code_member,name,email,postal1,postal2,address,tel) VALUES(?,?,?,?,?,?,?)'; 75$stmt=$dbh->prepare($sql); 76$data=array(); 77$data[]=0; 78$data[]=$onamae; 79$data[]=$email; 80$data[]=$postal1; 81$data[]=$postal2; 82$data[]=$address; 83$data[]=$tel; 84$stmt->execute($data); 85 86 87$sql='SELECT LAST_INSERT_ID()'; 88$stmt=$dbh->prepare($sql); 89$stmt->execute(); 90$rec=$stmt->fetch(PDO::FETCH_ASSOC); 91$lastcode=$rec['LAST_INSERT_ID()']; 92 93for($i=0;$i<$max;$i++){ 94 $sql='INSERT INTO dat_sales_product(code_sales,code_product,price,quantity) VALUES(?,?,?,?)'; 95$stmt=$dbh->prepare($sql); 96$data=array(); 97$data[]=$lastcode; 98$data[]=$cart[$i]; 99$data[]=$kakaku[$i]; 100$data[]=$kazu[$i]; 101$stmt->execute($data); 102 103} 104 105$sql='UNLOCK TABLES'; 106$stmt=$dbh->prepare($sql); 107$stmt->execute(); 108 109$dbh=null; 110 111$honbun.="送料は無料です。\n"; 112$honbun.="-------------"; 113$honbun.="\n"; 114$honbun.="代金は以下の口座にお振り込みください\n"; 115$honbun.="銀行 00000\n"; 116$honbun.="入金確認が取れ次第、発送させていただきます。\n"; 117$honbun.="〜安心野菜ろくまる園〜\n"; 118$honbun.="\n"; 119$honbun.="東京都123-4\n"; 120$honbun.="電話:000-4444-3333\n"; 121$honbun.="メール:info@inini.com\n"; 122 123//echo'<br/>'; 124//echo nl2br($honbun); 125 126 127//↓メールを送信するシステム p248 お客側のメール 128$title='ご注文ありがとうございます'; 129$header='From:info@inini.com';//送信元 130$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8'); 131mb_language('japanese'); 132mb_internal_encoding('UTF-8');//mb_language('japanese');mb_internal_encodingこの形のまま覚える 133mb_send_mail($email,$title,$honbun,$header); //mb_send_mail(宛先, 件名, メッセージ, ヘッダ):https://techplay.jp/column/550 134 135 136 137//↓メールを送信するシステム p248 お店側のメール $headerに注目 138$title='お客様からご注文がありました。'; 139$header='From:'.$email; 140$honbun=html_entity_decode($honbun,ENT_QUOTES,'UTF-8'); 141mb_language('japanese'); 142mb_internal_encoding('UTF-8');//mb_language('japanese');mb_internal_encodingこの形のまま覚える 143mb_send_mail('info@inini.com',$title,$honbun,$header); //mb_send_mail(宛先, 件名, メッセージ, ヘッダ):https://techplay.jp/column/550 144 145}catch(PDOException $e){ 146 exit($e->getMessage()); 147 148} 149 150?> 151 152</body> 153</html>
「SQLSTATE[42000]: Syntax error or access violation: 1044」というエラーについて質問です。
sql
1$sql='LOCK TABLES dat_sales WRITE,dat_sales_product WRITE'; 2$stmt=$dbh->prepare($sql); 3$stmt->execute(); 4 5_____________ 6 7$sql='UNLOCK TABLES'; 8$stmt=$dbh->prepare($sql); 9$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」この記事を参考にしましたが、うまくいきませんでした。
他にも同じような質問あり、真似てみたのですが、解決できませんでした。皆様のお力を借りられたら幸いです。ご教授の方をよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー