回答編集履歴

6

説明修正

2017/06/29 04:32

投稿

m.ts10806
m.ts10806

スコア80854

test CHANGED
@@ -48,13 +48,13 @@
48
48
 
49
49
  単に最大値+1をとりたいだけなら```select max(reserveID)+1 FROM yoyaku_tbl```だけで良いはず。また、別名つけておくととりやすくなります。
50
50
 
51
- 例:select max(reserveID)+1 as max_reserve_id FROM yoyaku_tbl
51
+ 例:select max(reserveID)+1 as new_reserve_id FROM yoyaku_tbl
52
52
 
53
53
 
54
54
 
55
55
  ```PHP
56
56
 
57
- $row = $stmt -> fetch(PDO::FETCH_ASSOC); //max()により最大値+1の情報のみ1行が取得されている
57
+ $row = $stmt->fetch(PDO::FETCH_ASSOC); //SQLにより最大値+1の情報のみ1行1カラムのみが取得されている
58
58
 
59
59
 
60
60
 
@@ -70,7 +70,7 @@
70
70
 
71
71
  <td>
72
72
 
73
- {$row["max_reserve_id"]}
73
+ {$row["new_reserve_id"]}
74
74
 
75
75
  FRM1;
76
76
 

5

修正

2017/06/29 04:32

投稿

m.ts10806
m.ts10806

スコア80854

test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
  あとyambejpさんのご指摘のようにhtmlエスケープをかけておくと良いでしょう。
84
84
 
85
- ※htmlにミスがあったので勝手に修正してます。比較して探してみてください。
85
+ ご提示ソース内のhtmlに記ミスがあったので勝手に修正してます。比較して探してみてください。
86
86
 
87
87
 
88
88
 

4

修正

2017/06/29 04:23

投稿

m.ts10806
m.ts10806

スコア80854

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
 
34
34
 
35
- 既に指摘があるかもしれせんが、おそらくそのSQLでは予約ID+1は取得できないと思い
35
+ 既に指摘があるかとは思い、おそらくそのSQLでは予約ID+1は取得できません
36
36
 
37
37
  SQLのエラーがでそうです。
38
38
 
@@ -40,13 +40,13 @@
40
40
 
41
41
 
42
42
 
43
- 最大値とりたいだけならおそらく```select max(reserveID)+1 FROM yoyaku_tbl```だけで良はず
43
+ 提示ソースのように```reserveID(max)```と書いてしまうと**reserveID()という関数にmaxとう引数を渡している**ことになります
44
44
 
45
- 提示ソースのうに```reserveID(max)```と書いてしまうと**reserveID()という自作の関数maxという引数を渡している**ことにります
45
+ 「そんな関数ない(&引数maxにして「そんなカラムなよ」)」ってSQLのエラーが出んじゃいでしょうか
46
46
 
47
- 「そんな関数ないよ」ってSQLのエラーが出るんじゃないでしょうか。
48
47
 
48
+
49
- 別名つけておくととりやすくなります。
49
+ 単に最大値+1をとりたいだけなら```select max(reserveID)+1 FROM yoyaku_tbl```だけで良いはず。また、別名つけておくととりやすくなります。
50
50
 
51
51
  例:select max(reserveID)+1 as max_reserve_id FROM yoyaku_tbl
52
52
 
@@ -80,7 +80,7 @@
80
80
 
81
81
 
82
82
 
83
- あとyambejpさんのご指摘のようにhtmlエスケープかけておくと良いでしょう。
83
+ あとyambejpさんのご指摘のようにhtmlエスケープかけておくと良いでしょう。
84
84
 
85
85
  ※htmlにも記載ミスがあったので勝手に修正してます。比較して探してみてください。
86
86
 

3

修正

2017/06/29 04:22

投稿

m.ts10806
m.ts10806

スコア80854

test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
  別名つけておくととりやすくなります。
50
50
 
51
- ```select max(reserveID)+1 as max_reserve_id FROM yoyaku_tbl```
51
+ 例:select max(reserveID)+1 as max_reserve_id FROM yoyaku_tbl
52
52
 
53
53
 
54
54
 
@@ -62,7 +62,7 @@
62
62
 
63
63
  <form action="./reserve_scr.php" method="get">
64
64
 
65
- <table border=0">
65
+ <table border="0">
66
66
 
67
67
  <tr>
68
68
 
@@ -72,9 +72,17 @@
72
72
 
73
73
  {$row["max_reserve_id"]}
74
74
 
75
+ FRM1;
76
+
77
+
78
+
75
79
  ```
76
80
 
81
+
82
+
77
83
  あとyambejpさんのご指摘のようにhtmlエスケープはかけておくと良いでしょう。
84
+
85
+ ※htmlにも記載ミスがあったので勝手に修正してます。比較して探してみてください。
78
86
 
79
87
 
80
88
 

2

変更

2017/06/29 04:16

投稿

m.ts10806
m.ts10806

スコア80854

test CHANGED
@@ -40,11 +40,41 @@
40
40
 
41
41
 
42
42
 
43
- 単に最大値とりたいだけならおそらく```select max(reserveID) FROM yoyaku_tbl```だけで良いはず。
43
+ 単に最大値とりたいだけならおそらく```select max(reserveID)+1 FROM yoyaku_tbl```だけで良いはず。
44
44
 
45
45
  提示ソースのように```reserveID(max)```と書いてしまうと**reserveID()という自作の関数にmaxという引数を渡している**ことになります。
46
46
 
47
47
  「そんな関数ないよ」ってSQLのエラーが出るんじゃないでしょうか。
48
+
49
+ 別名つけておくととりやすくなります。
50
+
51
+ ```select max(reserveID)+1 as max_reserve_id FROM yoyaku_tbl```
52
+
53
+
54
+
55
+ ```PHP
56
+
57
+ $row = $stmt -> fetch(PDO::FETCH_ASSOC); //max()により最大値+1の情報のみ1行が取得されている
58
+
59
+
60
+
61
+ print <<< FRM1
62
+
63
+ <form action="./reserve_scr.php" method="get">
64
+
65
+ <table border=0">
66
+
67
+ <tr>
68
+
69
+ <td>予約番号</td>
70
+
71
+ <td>
72
+
73
+ {$row["max_reserve_id"]}
74
+
75
+ ```
76
+
77
+ あとyambejpさんのご指摘のようにhtmlエスケープはかけておくと良いでしょう。
48
78
 
49
79
 
50
80
 

1

2つ目の回答を追記

2017/06/29 04:14

投稿

m.ts10806
m.ts10806

スコア80854

test CHANGED
@@ -1,3 +1,5 @@
1
+ # エラーについて
2
+
1
3
  ヒアドキュメント内における連想配列の展開の仕方ではないでしょうか?
2
4
 
3
5
 
@@ -21,3 +23,33 @@
21
23
  ヒアドキュメントの閉じ部分も含めたソース全体をご提示いただいたわけではないので
22
24
 
23
25
  他にもあるかもしれませんが・・ひとまず。
26
+
27
+
28
+
29
+
30
+
31
+ # SQLについて
32
+
33
+
34
+
35
+ 既に指摘があるかもしれませんが、おそらくそのSQLでは予約ID+1は取得できないと思います。
36
+
37
+ SQLのエラーがでそうです。
38
+
39
+ > select * FROM yoyaku_tbl where reserveID(max)
40
+
41
+
42
+
43
+ 単に最大値とりたいだけならおそらく```select max(reserveID) FROM yoyaku_tbl```だけで良いはず。
44
+
45
+ 提示ソースのように```reserveID(max)```と書いてしまうと**reserveID()という自作の関数にmaxという引数を渡している**ことになります。
46
+
47
+ 「そんな関数ないよ」ってSQLのエラーが出るんじゃないでしょうか。
48
+
49
+
50
+
51
+ プログラミング言語からSQLを用いてDB問い合わせを行う際は、
52
+
53
+ 実際にDBに対してツールなどで直接SQLを実行して、問題なく意図通りに動くかどうかを確認されたほうが良いと思います。
54
+
55
+ mysqlならphpmyadmin、postgreSQLならpgadminなど、ですね。