teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

2022/01/17 16:52

投稿

xo_yo
xo_yo

スコア54

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

1

タイトルをわかりやすくするために変更しました

2022/01/05 21:24

投稿

xo_yo
xo_yo

スコア54

title CHANGED
@@ -1,1 +1,1 @@
1
- 気づけばプロ並みPHP
1
+ 気づけばプロ並みPHP SQLSTATE[42000]: Syntax error or access violation: 1044について
body CHANGED
File without changes