質問編集履歴
4
koushin.phpの内容と表示されるエラーメッセージの内容を更新しました。
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 '(
|
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
|
160
|
+
$st = $pdo->query("SELECT name, price, zaiko FROM shohin_tb WHERE shohin_id = '$shohin_id'");
|
158
|
-
$
|
161
|
+
$muni = $st->fetchAll();
|
159
162
|
|
160
163
|
if (!isset ($name)) {
|
161
|
-
$name = $
|
164
|
+
$name = $muni['name'];
|
162
165
|
}
|
163
166
|
if (!isset ($price)) {
|
164
|
-
$price = $
|
167
|
+
$price = $muni['price'];
|
165
168
|
}
|
166
169
|
if (!isset ($zaiko)) {
|
167
|
-
$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
|
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
|
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
|
-
$
|
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(
|
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のコードと表示されるエラーメッセージを更新しました。
title
CHANGED
File without changes
|
body
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
|
|
@@ -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
|
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の内容とエラーメッセージを変更しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
在庫を管理するシステムにおいて、商品コード、商品名、値段、在庫数を入力してデータベースを更新するシステムを構築しているのですが、下記のkousinn.phpにおいて『Parse error: syntax error, unexpected '$
|
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
|
-
$
|
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
|
-
$
|
181
|
+
$st->execute($params);
|
182
182
|
|
183
183
|
// 更新完了のメッセージ
|
184
184
|
echo '更新完了しました';
|
1
koushin.phpのコードを変更いたしました。
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 = $
|
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
|
-
|
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
|
|