質問編集履歴
4
koushin.phpの内容と表示されるエラーメッセージの内容を更新しました。
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 '(
|
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
|
319
|
+
$st = $pdo->query("SELECT name, price, zaiko FROM shohin_tb WHERE shohin_id = '$shohin_id'");
|
314
|
-
|
320
|
+
|
315
|
-
$
|
321
|
+
$muni = $st->fetchAll();
|
316
322
|
|
317
323
|
|
318
324
|
|
319
325
|
if (!isset ($name)) {
|
320
326
|
|
321
|
-
$name = $
|
327
|
+
$name = $muni['name'];
|
322
328
|
|
323
329
|
}
|
324
330
|
|
325
331
|
if (!isset ($price)) {
|
326
332
|
|
327
|
-
$price = $
|
333
|
+
$price = $muni['price'];
|
328
334
|
|
329
335
|
}
|
330
336
|
|
331
337
|
if (!isset ($zaiko)) {
|
332
338
|
|
333
|
-
$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
|
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(
|
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
|
-
$
|
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(
|
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のコードと表示されるエラーメッセージを更新しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
在庫を管理するシステムにおいて、商品コード、商品名、値段、在庫数を入力してデータベースを更新するシステムを構築しているのですが、下記のkousinn.phpにおいて『
|
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
|
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
|
-
|
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
|
357
|
+
$sql="UPDATE shohin_tb SET( name, price, zaiko, shohin_id)values(:name, :price, :zaiko, :id)";
|
344
|
-
|
345
|
-
|
358
|
+
|
346
|
-
|
347
|
-
$st = $pdo->prepare($sql);
|
359
|
+
$stmt = $pdo->prepare($sql);
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
360
|
+
|
354
|
-
|
355
|
-
$
|
361
|
+
$data=[':name' => "$name", ':price' => "$price", ':zaiko' => "$zaiko", ':id' => "$shohin_id"];
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
362
|
+
|
360
|
-
|
361
|
-
$st->execute($
|
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の内容とエラーメッセージを変更しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
在庫を管理するシステムにおいて、商品コード、商品名、値段、在庫数を入力してデータベースを更新するシステムを構築しているのですが、下記のkousinn.phpにおいて『Parse error: syntax error, unexpected '$st
|
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
|
-
$st
|
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
|
-
$st
|
361
|
+
$st->execute($params);
|
362
362
|
|
363
363
|
|
364
364
|
|
1
koushin.phpのコードを変更いたしました。
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 = $d
|
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
|
|