質問編集履歴

4

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

2017/11/27 04:17

投稿

Tsukumo_Aoi
Tsukumo_Aoi

スコア21

test CHANGED
File without changes
test 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
 
@@ -292,6 +292,12 @@
292
292
 
293
293
  ```PHP
294
294
 
295
+ <html>
296
+
297
+ <body>
298
+
299
+
300
+
295
301
  <?php
296
302
 
297
303
  require 'zaiko_common.php';
@@ -310,27 +316,27 @@
310
316
 
311
317
  $pdo = connect();
312
318
 
313
- $st = $pdo->query("SELECT * FROM shohin_tb WHERE shohin_id = $shohin_id");
319
+ $st = $pdo->query("SELECT name, price, zaiko FROM shohin_tb WHERE shohin_id = '$shohin_id'");
314
-
320
+
315
- $goods = $st;
321
+ $muni = $st->fetchAll();
316
322
 
317
323
 
318
324
 
319
325
  if (!isset ($name)) {
320
326
 
321
- $name = $goods['name'];
327
+ $name = $muni['name'];
322
328
 
323
329
  }
324
330
 
325
331
  if (!isset ($price)) {
326
332
 
327
- $price = $goods['price'];
333
+ $price = $muni['price'];
328
334
 
329
335
  }
330
336
 
331
337
  if (!isset ($zaiko)) {
332
338
 
333
- $zaiko = $goods['zaiko'];
339
+ $zaiko = $muni['zaiko'];
334
340
 
335
341
  }
336
342
 
@@ -338,13 +344,11 @@
338
344
 
339
345
  try{
340
346
 
341
- $dsn = 'mysql:host=localhost; dbname=roujin;charset=utf8;';
347
+ $dsn = 'mysql:host=localhost; dbname=roujin; charset=utf8';
342
348
 
343
349
  $user = 'root';
344
350
 
345
- $password = '';
346
-
347
- $pdo = new PDO($dsn, $user,$password);
351
+ $pdo = new PDO($dsn, $user);
348
352
 
349
353
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
350
354
 
@@ -354,13 +358,23 @@
354
358
 
355
359
  $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
356
360
 
357
- $sql="UPDATE shohin_tb SET( name, price, zaiko, shohin_id)values(:name, :price, :zaiko, :id)";
361
+ $sql="UPDATE shohin_tb SET (shohin_id,name,price,zaiko)values(:shohin_id,:name,:price,:zaiko)";
362
+
363
+
358
364
 
359
365
  $stmt = $pdo->prepare($sql);
360
366
 
361
- $data=[':name' => "$name", ':price' => "$price", ':zaiko' => "$zaiko", ':id' => "$shohin_id"];
367
+ $stmt->bindValue(':shohin_id',$shohin_id);
368
+
362
-
369
+ $stmt->bindValue(':name',$name);
370
+
371
+ $stmt->bindValue(':price',$price);
372
+
373
+ $stmt->bindValue(':zaiko',$zaiko);
374
+
363
- $stmt->execute($data);
375
+ $stmt->execute();
376
+
377
+
364
378
 
365
379
  $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
366
380
 
@@ -382,6 +396,10 @@
382
396
 
383
397
  <a href="zaiko_connect.php">商品在庫管理画面へ</a>
384
398
 
399
+ </body>
400
+
401
+ </html>
402
+
385
403
 
386
404
 
387
405
  ```

3

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

2017/11/27 04:17

投稿

Tsukumo_Aoi
Tsukumo_Aoi

スコア21

test CHANGED
File without changes
test 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
 
@@ -312,7 +312,7 @@
312
312
 
313
313
  $st = $pdo->query("SELECT * FROM shohin_tb WHERE shohin_id = $shohin_id");
314
314
 
315
- $goods = $st->fetchAll();
315
+ $goods = $st;
316
316
 
317
317
 
318
318
 
@@ -336,42 +336,52 @@
336
336
 
337
337
 
338
338
 
339
-
339
+ try{
340
+
340
-
341
+ $dsn = 'mysql:host=localhost; dbname=roujin;charset=utf8;';
342
+
341
- // UPDATE文を変数に格納
343
+ $user = 'root';
344
+
342
-
345
+ $password = '';
346
+
347
+ $pdo = new PDO($dsn, $user,$password);
348
+
349
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
350
+
351
+ $pdo->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND,'SET NAMES utf8');
352
+
353
+ $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
354
+
355
+ $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
356
+
343
- $sql = "UPDATE shohin_tb SET name = :name, price = :price, zaiko = :zaiko WHERE shohin_id = :id";
357
+ $sql="UPDATE shohin_tb SET( name, price, zaiko, shohin_id)values(:name, :price, :zaiko, :id)";
344
-
345
- // 更新する値と該当のIDは空のまま、SQL実行の準備をする
358
+
346
-
347
- $st = $pdo->prepare($sql);
359
+ $stmt = $pdo->prepare($sql);
348
-
349
-
350
-
351
-
352
-
353
- // 挿入する値が複数の場合はカンマ区切りで追加する
360
+
354
-
355
- $params = array(':name' => "$name", ':price' => "$price", ':zaiko' => "$zaiko", ':id' => "$shohin_id");
361
+ $data=[':name' => "$name", ':price' => "$price", ':zaiko' => "$zaiko", ':id' => "$shohin_id"];
356
-
357
-  
358
-
359
- // 修正する値と該当のIDが入った変数をexecuteにセットしてSQLを実行
362
+
360
-
361
- $st->execute($params);
363
+ $stmt->execute($data);
364
+
362
-
365
+ $rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
366
+
363
-  
367
+ print_r($rows);
368
+
369
+ }catch(PDOException $e){
370
+
371
+ die($e->getMessage());
372
+
373
+ }
374
+
375
+
364
376
 
365
377
  // 更新完了のメッセージ
366
378
 
367
379
  echo '更新完了しました';
368
380
 
369
- <a href="zaiko_connect.php">商品在庫管理画面へ</a>;
370
-
371
-
372
-
373
381
  ?>
374
382
 
383
+ <a href="zaiko_connect.php">商品在庫管理画面へ</a>
384
+
375
385
 
376
386
 
377
387
  ```

2

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

2017/11/24 04:35

投稿

Tsukumo_Aoi
Tsukumo_Aoi

スコア21

test CHANGED
File without changes
test 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
 
@@ -344,7 +344,7 @@
344
344
 
345
345
  // 更新する値と該当のIDは空のまま、SQL実行の準備をする
346
346
 
347
- $stmt = $pdo->prepare($sql);
347
+ $st = $pdo->prepare($sql);
348
348
 
349
349
 
350
350
 
@@ -358,7 +358,7 @@
358
358
 
359
359
  // 修正する値と該当のIDが入った変数をexecuteにセットしてSQLを実行
360
360
 
361
- $stmt->execute($params);
361
+ $st->execute($params);
362
362
 
363
363
   
364
364
 

1

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

2017/11/24 02:43

投稿

Tsukumo_Aoi
Tsukumo_Aoi

スコア21

test CHANGED
File without changes
test CHANGED
@@ -310,7 +310,7 @@
310
310
 
311
311
  $pdo = connect();
312
312
 
313
- $st = $pdo->query("SELECT * FROM shohin_tb WHERE shohin_id = $id");
313
+ $st = $pdo->query("SELECT * FROM shohin_tb WHERE shohin_id = $shohin_id");
314
314
 
315
315
  $goods = $st->fetchAll();
316
316
 
@@ -338,31 +338,31 @@
338
338
 
339
339
 
340
340
 
341
-
341
+ // UPDATE文を変数に格納
342
-
342
+
343
- $sql = "UPDATE shohin_tb SET name = :name, price = :price, zaiko = :zaiko WHERE id = :id";
343
+ $sql = "UPDATE shohin_tb SET name = :name, price = :price, zaiko = :zaiko WHERE shohin_id = :id";
344
+
344
-
345
+ // 更新する値と該当のIDは空のまま、SQL実行の準備をする
345
-
346
-
346
+
347
- $stmt = $dbh->prepare($sql);
347
+ $stmt = $pdo->prepare($sql);
348
+
349
+
350
+
351
+
352
+
348
-
353
+ // 挿入する値が複数の場合はカンマ区切りで追加する
349
-
350
-
351
-
352
-
353
-
354
354
 
355
355
  $params = array(':name' => "$name", ':price' => "$price", ':zaiko' => "$zaiko", ':id' => "$shohin_id");
356
356
 
357
357
   
358
358
 
359
-
359
+ // 修正する値と該当のIDが入った変数をexecuteにセットしてSQLを実行
360
360
 
361
361
  $stmt->execute($params);
362
362
 
363
363
   
364
364
 
365
-
365
+ // 更新完了のメッセージ
366
366
 
367
367
  echo '更新完了しました';
368
368