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

質問編集履歴

4

koushin.phpの内容と表示されるエラーメッセージの内容を更新しました。

2017/11/27 04:17

投稿

Tsukumo_Aoi
Tsukumo_Aoi

スコア21

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- 在庫を管理するシステムにおいて、商品コード、商品名、値段、在庫数を入力してデータベースを更新するシステムを構築しているのですが、下記のkousinn.phpにおいて『SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '( name, price, zaiko, shohin_id)values(?, ?, ?, ?)' at line 1』と表示されます。
1
+ 在庫を管理するシステムにおいて、商品コード、商品名、値段、在庫数を入力してデータベースを更新するシステムを構築しているのですが、下記のkousinn.phpにおいて『SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(shohin_id,name,price,zaiko) values (?,?,?,?)' at line 1』と表示されます。
2
2
  更新については商品コードを必須項目として、商品名・値段・在庫数の内、更新が必要な項目を入力すればその項目だけ更新されるようにするシステムです。
3
3
  どこがおかしいのかご教授お願い致します。
4
4
 
@@ -145,6 +145,9 @@
145
145
 
146
146
  koushin.php
147
147
  ```PHP
148
+ <html>
149
+ <body>
150
+
148
151
  <?php
149
152
  require 'zaiko_common.php';
150
153
 
@@ -154,32 +157,36 @@
154
157
  $zaiko = $_POST['zaiko'];
155
158
 
156
159
  $pdo = connect();
157
- $st = $pdo->query("SELECT * FROM shohin_tb WHERE shohin_id = $shohin_id");
160
+ $st = $pdo->query("SELECT name, price, zaiko FROM shohin_tb WHERE shohin_id = '$shohin_id'");
158
- $goods = $st;
161
+ $muni = $st->fetchAll();
159
162
 
160
163
  if (!isset ($name)) {
161
- $name = $goods['name'];
164
+ $name = $muni['name'];
162
165
  }
163
166
  if (!isset ($price)) {
164
- $price = $goods['price'];
167
+ $price = $muni['price'];
165
168
  }
166
169
  if (!isset ($zaiko)) {
167
- $zaiko = $goods['zaiko'];
170
+ $zaiko = $muni['zaiko'];
168
171
  }
169
172
 
170
173
  try{
171
- $dsn = 'mysql:host=localhost; dbname=roujin;charset=utf8;';
174
+ $dsn = 'mysql:host=localhost; dbname=roujin; charset=utf8';
172
175
  $user = 'root';
173
- $password = '';
174
- $pdo = new PDO($dsn, $user,$password);
176
+ $pdo = new PDO($dsn, $user);
175
177
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
176
178
  $pdo->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND,'SET NAMES utf8');
177
179
  $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
178
180
  $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
179
- $sql="UPDATE shohin_tb SET( name, price, zaiko, shohin_id)values(:name, :price, :zaiko, :id)";
181
+ $sql="UPDATE shohin_tb SET (shohin_id,name,price,zaiko)values(:shohin_id,:name,:price,:zaiko)";
182
+
180
183
  $stmt = $pdo->prepare($sql);
181
- $data=[':name' => "$name", ':price' => "$price", ':zaiko' => "$zaiko", ':id' => "$shohin_id"];
184
+ $stmt->bindValue(':shohin_id',$shohin_id);
185
+ $stmt->bindValue(':name',$name);
186
+ $stmt->bindValue(':price',$price);
187
+ $stmt->bindValue(':zaiko',$zaiko);
182
- $stmt->execute($data);
188
+ $stmt->execute();
189
+
183
190
  $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
184
191
  print_r($rows);
185
192
  }catch(PDOException $e){
@@ -190,5 +197,7 @@
190
197
  echo '更新完了しました';
191
198
  ?>
192
199
  <a href="zaiko_connect.php">商品在庫管理画面へ</a>
200
+ </body>
201
+ </html>
193
202
 
194
203
  ```

3

koushin.phpのコードと表示されるエラーメッセージを更新しました。

2017/11/27 04:17

投稿

Tsukumo_Aoi
Tsukumo_Aoi

スコア21

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- 在庫を管理するシステムにおいて、商品コード、商品名、値段、在庫数を入力してデータベースを更新するシステムを構築しているのですが、下記のkousinn.phpにおいて『Parse error: syntax error, unexpected '$st' (T_VARIABLE) in C:\xampp\htdocs\phptest\zaikokanri\koushin.php on line 34』と表示されます。
1
+ 在庫を管理するシステムにおいて、商品コード、商品名、値段、在庫数を入力してデータベースを更新するシステムを構築しているのですが、下記のkousinn.phpにおいて『SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '( name, price, zaiko, shohin_id)values(?, ?, ?, ?)' at line 1』と表示されます。
2
2
  更新については商品コードを必須項目として、商品名・値段・在庫数の内、更新が必要な項目を入力すればその項目だけ更新されるようにするシステムです。
3
3
  どこがおかしいのかご教授お願い致します。
4
4
 
@@ -155,7 +155,7 @@
155
155
 
156
156
  $pdo = connect();
157
157
  $st = $pdo->query("SELECT * FROM shohin_tb WHERE shohin_id = $shohin_id");
158
- $goods = $st->fetchAll();
158
+ $goods = $st;
159
159
 
160
160
  if (!isset ($name)) {
161
161
  $name = $goods['name'];
@@ -167,23 +167,28 @@
167
167
  $zaiko = $goods['zaiko'];
168
168
  }
169
169
 
170
+ try{
171
+ $dsn = 'mysql:host=localhost; dbname=roujin;charset=utf8;';
172
+ $user = 'root';
173
+ $password = '';
174
+ $pdo = new PDO($dsn, $user,$password);
175
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
176
+ $pdo->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND,'SET NAMES utf8');
177
+ $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
178
+ $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
179
+ $sql="UPDATE shohin_tb SET( name, price, zaiko, shohin_id)values(:name, :price, :zaiko, :id)";
180
+ $stmt = $pdo->prepare($sql);
181
+ $data=[':name' => "$name", ':price' => "$price", ':zaiko' => "$zaiko", ':id' => "$shohin_id"];
182
+ $stmt->execute($data);
183
+ $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
184
+ print_r($rows);
185
+ }catch(PDOException $e){
186
+ die($e->getMessage());
187
+ }
170
188
 
171
- // UPDATE文を変数に格納
172
- $sql = "UPDATE shohin_tb SET name = :name, price = :price, zaiko = :zaiko WHERE shohin_id = :id";
173
- // 更新する値と該当のIDは空のまま、SQL実行の準備をする
174
- $st = $pdo->prepare($sql);
175
-
176
-
177
- // 挿入する値が複数の場合はカンマ区切りで追加する
178
- $params = array(':name' => "$name", ':price' => "$price", ':zaiko' => "$zaiko", ':id' => "$shohin_id");
179
-  
180
- // 修正する値と該当のIDが入った変数をexecuteにセットしてSQLを実行
181
- $st->execute($params);
182
-  
183
189
  // 更新完了のメッセージ
184
190
  echo '更新完了しました';
185
- <a href="zaiko_connect.php">商品在庫管理画面へ</a>;
186
-
187
191
  ?>
192
+ <a href="zaiko_connect.php">商品在庫管理画面へ</a>
188
193
 
189
194
  ```

2

koushin.phpの内容とエラーメッセージを変更しました。

2017/11/24 04:35

投稿

Tsukumo_Aoi
Tsukumo_Aoi

スコア21

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- 在庫を管理するシステムにおいて、商品コード、商品名、値段、在庫数を入力してデータベースを更新するシステムを構築しているのですが、下記のkousinn.phpにおいて『Parse error: syntax error, unexpected '$stmt' (T_VARIABLE) in C:\xampp\htdocs\phptest\zaikokanri\koushin.php on line 34』と表示されます。
1
+ 在庫を管理するシステムにおいて、商品コード、商品名、値段、在庫数を入力してデータベースを更新するシステムを構築しているのですが、下記のkousinn.phpにおいて『Parse error: syntax error, unexpected '$st' (T_VARIABLE) in C:\xampp\htdocs\phptest\zaikokanri\koushin.php on line 34』と表示されます。
2
2
  更新については商品コードを必須項目として、商品名・値段・在庫数の内、更新が必要な項目を入力すればその項目だけ更新されるようにするシステムです。
3
3
  どこがおかしいのかご教授お願い致します。
4
4
 
@@ -171,14 +171,14 @@
171
171
  // UPDATE文を変数に格納
172
172
  $sql = "UPDATE shohin_tb SET name = :name, price = :price, zaiko = :zaiko WHERE shohin_id = :id";
173
173
  // 更新する値と該当のIDは空のまま、SQL実行の準備をする
174
- $stmt = $pdo->prepare($sql);
174
+ $st = $pdo->prepare($sql);
175
175
 
176
176
 
177
177
  // 挿入する値が複数の場合はカンマ区切りで追加する
178
178
  $params = array(':name' => "$name", ':price' => "$price", ':zaiko' => "$zaiko", ':id' => "$shohin_id");
179
179
   
180
180
  // 修正する値と該当のIDが入った変数をexecuteにセットしてSQLを実行
181
- $stmt->execute($params);
181
+ $st->execute($params);
182
182
   
183
183
  // 更新完了のメッセージ
184
184
  echo '更新完了しました';

1

koushin.phpのコードを変更いたしました。

2017/11/24 02:43

投稿

Tsukumo_Aoi
Tsukumo_Aoi

スコア21

title CHANGED
File without changes
body CHANGED
@@ -154,7 +154,7 @@
154
154
  $zaiko = $_POST['zaiko'];
155
155
 
156
156
  $pdo = connect();
157
- $st = $pdo->query("SELECT * FROM shohin_tb WHERE shohin_id = $id");
157
+ $st = $pdo->query("SELECT * FROM shohin_tb WHERE shohin_id = $shohin_id");
158
158
  $goods = $st->fetchAll();
159
159
 
160
160
  if (!isset ($name)) {
@@ -168,19 +168,19 @@
168
168
  }
169
169
 
170
170
 
171
+ // UPDATE文を変数に格納
172
+ $sql = "UPDATE shohin_tb SET name = :name, price = :price, zaiko = :zaiko WHERE shohin_id = :id";
173
+ // 更新する値と該当のIDは空のまま、SQL実行の準備をする
174
+ $stmt = $pdo->prepare($sql);
171
175
 
172
- $sql = "UPDATE shohin_tb SET name = :name, price = :price, zaiko = :zaiko WHERE id = :id";
173
176
 
174
- $stmt = $dbh->prepare($sql);
177
+ // 挿入する値が複数の場合はカンマ区切りで追加する
175
-
176
-
177
-
178
178
  $params = array(':name' => "$name", ':price' => "$price", ':zaiko' => "$zaiko", ':id' => "$shohin_id");
179
179
   
180
-
180
+ // 修正する値と該当のIDが入った変数をexecuteにセットしてSQLを実行
181
181
  $stmt->execute($params);
182
182
   
183
-
183
+ // 更新完了のメッセージ
184
184
  echo '更新完了しました';
185
185
  <a href="zaiko_connect.php">商品在庫管理画面へ</a>;
186
186