在庫を管理するシステムにおいて、商品コード、商品名、値段、在庫数を入力してデータベースを更新するシステムを構築しているのですが、下記の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』と表示されます。
更新については商品コードを必須項目として、商品名・値段・在庫数の内、更新が必要な項目を入力すればその項目だけ更新されるようにするシステムです。
どこがおかしいのかご教授お願い致します。
zaiko_common.php
php
1<?php 2 session_start(); 3 4 function connect() { 5 return new PDO("mysql:dbname=roujin", "root"); 6 } 7 8?> 9
syouhinzaiko.php
PHP
1<html> 2<head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 <meta http-equiv="Content-Style-Type" content="text/css"> 5 <meta http-equiv="Content-Script-Type" content="text/javascript"> 6 <title>商品在庫管理画面</title> 7<style type="text/css"> 8 9<!-- 10FORM { 11 margin: 0px; 12} 13--> 14</style> 15 16<script> 17<!-- 18function refresh() { 19 window.location.reload(); 20} 21// --> 22</script> 23 24<script> 25 26function goServletB(){ 27document.getElementById('form').action = 'add.php'; 28} 29function goServletC(){ 30document.getElementById('form').action = 'derete.php'; 31} 32</Script> 33 34</head> 35 36 37<body> 38 39 <div align="center"> 40 <font color="#00008b"><strong><font size="+1">商品在庫管理画面</font></strong></font> 41 <hr width="300"> 42 <small><font color="#ff0000"></font></small> 43 44 <div align="center"> 45 <form id='form' name='form' action="koushin.php" method = "POST"> 46 <table width="860" border="0" cellspacing="0" cellpadding="2" summary="商品の追加・更新・削除"> 47 <tbody> 48 <tr> 49 <td> 50 <small><font color="#ff0000">★ 商品コードの変更はできません。</font><br> 51 商品コードを変更する場合は、新しい商品コードで商品を追加し、古い商品コードの商品は削除してください。</small></td></tr> 52 <tr> 53 <td> 54 <table width="100%" border="1" cellspacing="0" cellpadding="2" summary="商品情報入力欄"> 55 <tbody><tr><td>商品コード(必須)<br><small>※半角英数字でお願いします。</small></td> 56 <td align="center" valign="middle">商品名(任意)</td><td align="center" valign="middle">価格(任意)<br> 57 <small>※カンマは入れずに半角数字でご記入ください。</small></td> 58 <td align="center" valign="middle">在庫数(必須)<br> 59 <small>※カンマは入れずに半角数字でご記入ください。</small></td> 60 </tr> 61 62 <tr> 63 <td align="center"><input name="shohin_id" type="text" size="18" maxlength="200" value=""></td> 64 <td align="center" valign="middle"><input name="name" type="text" size="35" maxlength="200" value=""></td> 65 <td align="center" valign="middle"><input name="price" type="text" size="15" maxlength="20" value=""></td> 66 <td align="center" valign="middle"><input name="zaiko" type="text" size="8" maxlength="20" value=""></td> 67 </tr></tbody></table> 68 </td> 69 </tr> 70 71 <tr> 72 <td> 73 <input type="submit" value="更新" > 74 <input type="submit" value="追加" onclick="goServletB();"> 75 <input type="submit" value="削除" onclick="goServletC();"> 76 <input type="reset" value="取消"> 77 </td> 78 </tr> 79 </tbody></table> 80</form> 81</div> 82 83<hr> 84 85<div align="center"> 86<table width="860" border="0" cellspacing="0" cellpadding="0" summary="商品在庫一覧"> 87<caption align="top"><font color="#00008b"><strong>商品在庫一覧</strong></font></caption> 88 <tbody><tr><td align="center"><table width="860" border="1" cellspacing="0" cellpadding="1" summary="ヘッダー"> 89 <tbody><tr><td width="120" align="center"><small>商品コード<br> 90※半角英数字</small></td> 91<td width="280" align="center" valign="middle"><small>商品名</small></td> 92<td width="110" align="center" valign="middle"><small>価格</small></td> 93<td width="82" align="center" valign="middle"><small>在庫数</small></td> 94<td width="110" align="center" nowrap=""><small>削除ボタン</small></td> 95 </tr> 96</tbody></table> 97 98 99<table> 100 <tbody><tr><td align="center"><table width="860" border="1" cellspacing="0" cellpadding="1" summary="ヘッダー"> 101 <tr><td width="120" align="center"> 102 <?php foreach ($goods as $g) { ?> 103 <tbody><tr> 104 <td width="120" align="center"><small> 105 <p><?php echo $g['shohin_id'] ?></p></small> 106 </td> 107 <td width="280" align="center" valign="middle"><small> 108 <p><?php echo $g['name'] ?></p></small></td> 109 <td width="110" align="center" valign="middle"><small> 110 <br><p><?php echo $g['price'] ?> 円</p><br> 111 </small></td> 112 <td width="82" align="center" valign="middle"><small> 113 <p>在庫: <?php echo $g['zaiko'] ?> 個</p> 114 </small></td> 115 <td width="110" align="center" nowrap=""><input type="button" action="derete" value="削除"><small> 116 </small></input></td> 117 </tr> 118 <?php } ?> 119</tbody></table> 120 121 122 123 124</body></html> 125
koushin.php
PHP
1<html> 2<body> 3 4<?php 5 require 'zaiko_common.php'; 6 7$shohin_id = $_POST['shohin_id']; 8$name = $_POST['name']; 9$price = $_POST['price']; 10$zaiko = $_POST['zaiko']; 11 12$pdo = connect(); 13$st = $pdo->query("SELECT name, price, zaiko FROM shohin_tb WHERE shohin_id = '$shohin_id'"); 14$muni = $st->fetchAll(); 15 16 if (!isset ($name)) { 17 $name = $muni['name']; 18 } 19 if (!isset ($price)) { 20 $price = $muni['price']; 21 } 22 if (!isset ($zaiko)) { 23 $zaiko = $muni['zaiko']; 24 } 25 26 try{ 27 $dsn = 'mysql:host=localhost; dbname=roujin; charset=utf8'; 28 $user = 'root'; 29 $pdo = new PDO($dsn, $user); 30 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 31 $pdo->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND,'SET NAMES utf8'); 32 $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 33 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 34 $sql="UPDATE shohin_tb SET (shohin_id,name,price,zaiko)values(:shohin_id,:name,:price,:zaiko)"; 35 36 $stmt = $pdo->prepare($sql); 37 $stmt->bindValue(':shohin_id',$shohin_id); 38 $stmt->bindValue(':name',$name); 39 $stmt->bindValue(':price',$price); 40 $stmt->bindValue(':zaiko',$zaiko); 41 $stmt->execute(); 42 43 $rows=$stmt->fetchAll(PDO::FETCH_ASSOC); 44 print_r($rows); 45 }catch(PDOException $e){ 46 die($e->getMessage()); 47 } 48 49// 更新完了のメッセージ 50 echo '更新完了しました'; 51?> 52<a href="zaiko_connect.php">商品在庫管理画面へ</a> 53</body> 54</html> 55
回答4件
あなたの回答
tips
プレビュー