特定のレコードを表示するためのコード

このQ&Aのポイント
  • kensaku.htmlから数字を入力・検索して、特定のレコードを取り出すためのコードです。
  • データベースにあるすべてのデータが返される問題を解決するために、ichiran.phpを修正します。
  • Windows8上でXAMPPを使用し、PHPMyAdminを利用した開発環境で実装されています。
回答を見る
  • ベストアンサー

特定のレコードだけを表示させるためのコード

●質問の主旨 kensaku.htmlから数字(データベースのコード番号)を入力・検索して、 PHPMyAdminにあるデータベースから、特定のレコードを取り出したいのですが、 データベースにあるすべてのデータが返されます。 検索窓に入力した特定のレコードの内容だけを 返すためには、下記のichiran.phpをどのように直せばよいでしょうか? ●プログラムの流れ 1.kensaku.htmlの検索窓に番号を入力・送信 2.PHPMyAdminにあるデータベース(aketo)にアクセス 3.ichiran.phpで検索結果を表示 ●プログラムコード (kensaku.html) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <form method="post" action="kensaku.php"> ご意見コードを入力してください。<br/> <input name="code" type="text" style="width:100px"><br/> <br/> <input type="submit" value="送信"><br/> </body> </html> (ichiran.php) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <?php $code=$_POST['code']; $dsn = 'mysql:dbname=phpkiso2;host=localhost'; $user = 'root'; $password = ''; $dbh = new PDO($dsn,$user,$password); $dbh->query('SET NAMES UTF-8'); $sql = 'SELECT * FROM anketo WHERE code='.$code; $stmt = $dbh->prepare($sql); $stmt->execute(); $stmt->execute(); while(1) { $rec = $stmt->fetch(PDO::FETCH_ASSOC); if($rec == false) { break; } print$rec['code']; print$rec['nickname']; print$rec['email']; print$rec['goiken']; print'<br/>'; } $dbh = null; ?> </body> </html> ●開発環境 windows8 xammp1.8.1 MySQL(PHPMyAdmin)

  • MySQL
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>$sql = 'SELECT * FROM anketo WHERE code='.$code; ダイレクトに$codeをクエリに書きこんでしまってはプリペアド処理になってない 何を参考にしているかわからないけど、その参考文献をもう一度よく 読みなおした方がよいと思います

dradra33
質問者

お礼

yambejp様 ご回答ありがとうございます。 >プリペアド処理 プリペアードステートメント処理のことですね。 参考文献の先の箇所(P142)を読んでいたら、 出てきました。もう一度じっくり読んでみます。 いきなりはじめるPHP~ワクワク・ドキドキの入門教室 http://www.amazon.co.jp/%E3%81%84%E3%81%8D%E3%81%AA%E3%82%8A%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BPHP~%E3%83%AF%E3%82%AF%E3%83%AF%E3%82%AF%E3%83%BB%E3%83%89%E3%82%AD%E3%83%89%E3%82%AD%E3%81%AE%E5%85%A5%E9%96%80%E6%95%99%E5%AE%A4~-%E8%B0%B7%E8%97%A4%E8%B3%A2%E4%B8%80/dp/4897978858/ref=sr_1_1?ie=UTF8&qid=1364482924&sr=8-1

関連するQ&A

  • プリペアードステートメント処理と特定レコードの表示

    ●質問の主旨 kensaku.htmlから数字(データベースのコード番号)を入力・検索して、 PHPMyAdminにあるデータベースから、特定のレコードを取り出したいと考えています ところが(ichiran.php)の$data[]=$code; コードについてNotice: Undefined variable: code と エラーが変え返されます。 検索窓に入力した特定のレコードの内容だけを 返すためには、下記のichiran.phpを, どのように直せばよいでしょうか? なお、質問:No.8014448と関連しています。 そのときプリペアードステートメント処理について指摘をいただきましたので、 その処理をいたしました。 http://okwave.jp/qa/q8014448.html ●プログラムの流れ 1.kensaku.htmlの検索窓に番号を入力・送信 2.PHPMyAdminにあるデータベース(aketo)にアクセス 3.ichiran.phpで検索結果を表示 ●プログラムコード (kensaku.html) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <form method="post" action="check.php"> ニックネームを入力してください<br/> <input name="nickname" type="text" style="width:100px"><br/> メールアドレスを入力してください<br/> <input name="email" type="text" style="width:200px"><br/> ご意見を入力してください<br/> <input name="goiken" type="text" style="width:300px"><br/> <br/> <input type="submit" value="送信"> </form> </body> </html> (ichiran.php) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <?php $dsn = 'mysql:dbname=phpkiso2;host=localhost'; $user = 'root'; $password = ''; $dbh = new PDO($dsn,$user,$password); $dbh->query('SET NAMES UTF-8'); $sql = 'SELECT * FROM anketo WHERE code=?'; $stmt = $dbh->prepare($sql); $data[]=$code; $stmt->execute($data); while(1) { $rec = $stmt->fetch(PDO::FETCH_ASSOC); if($rec == false) { break; } print$rec['code']; print$rec['nickname']; print$rec['email']; print$rec['goiken']; print'<br/>'; } $dbh = null; ?> </body> </html> ●開発環境 windows8 xammp1.8.1 MySQL(PHPMyAdmin) ●参考文献 いきなりはじめるPHP~ワクワク・ドキドキの入門教室(P142) http://www.amazon.co.jp/%E3%81%84%E3%81%8D%E3%81%AA%E3%82%8A%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BPHP~%E3%83%AF%E3%82%AF%E3%83%AF%E3%82%AF%E3%83%BB%E3%83%89%E3%82%AD%E3%83%89%E3%82%AD%E3%81%AE%E5%85%A5%E9%96%80%E6%95%99%E5%AE%A4~-%E8%B0%B7%E8%97%A4%E8%B3%A2%E4%B8%80/dp/4897978858/ref=sr_1_1?ie=UTF8&qid=1364482924&sr=8-1

    • ベストアンサー
    • PHP
  • phpプリペアードステートメントについて質問です。

    phpの練習で、以下のようなhtmlファイルとphpファイルを作り XAMPで作業をおこなっています。 以下にあるhtml.phpファイルでのやり取りはうまくいっているのですが、 このphpをプリペアードステートメントにする所で躓いています。 いろいろ調べてやってはみたものの、どうしても%を使った あいまい検索のところがわかりません。 ---------------------------------------------------------------- 以下、プリペアードステートメントにする前の ページ内容です。こちらではうまくいっています。 html <form method="post" action="kensaku.php"> ご意見コードを入力してください。<br /> <input name="code" type="text" style="width:100px"><br /> <br /> <input type="submit" value="送信"> </form> php <?php $code=$_POST['code']; $dsn = 'mysql:dbname=phpkiso;host=localhost'; $user = 'root'; $password =''; $dbh = new PDO($dsn,$user,$password); $dbh->query('SET NAMES UTF-8'); $sql = "select * from `anketo` where `goiken` like '%{$code}%' "; $stmt = $dbh->prepare($sql); $stmt-> execute(); while(1) { $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { break; } print $rec['code']; print $rec['nickname']; print $rec['email']; print $rec['goiken']; print '<br />'; } $dbh = null; ?> ---------------------------------------------------------------- 以上のphpの中の以下の分を $sql = "select * from `anketo` where `goiken` like '%{$code}%' "; $stmt = $dbh->prepare($sql); $stmt-> execute(); ↓ $sql ="SELECT*FROM anketo WHERE goiken like ?"; $stmt = $dbh->prepare($sql); $data[] = $code; $stmt->execute(array("%$_GET[$data]%")); こんな風に直しては見たのですが、なんだか うまくい行かずです。 よろしければ教えてください。 宜しくお願い致します。

    • 締切済み
    • PHP
  • php ログインについて

    php ログインについて phpでログイン画面を作っているのですがログインできません。エラー等々もでず、「スタッフコードかパスワードが違います」になります。ちなみにDBにはスタッフのデータはしっかり存在します。 コードとパスワードを正しく入力しているにもかかわらずログインできません。 ソースはこちらです [staff_login.php] <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>ログイン</title> </head> <body> スタッフログイン<br/> <br/> <form method="post" action="staff_login_check.php"> スタッフコード<br/> <input type="text" name="code"><br/> パスワード<br/> <input type="password" name="pass"><br/> <br/> <input type="submit" value="ログイン"> </form> </body> </html> [staff_login_check.php] <?php try { $staff_code=$_POST['code']; $staff_pass=$_POST['pass']; $staff_code=htmlspecialchars($staff_code); $staff_pass=htmlspecialchars($staff_pass); $staff_pass=md5($staff_pass); $dsn='mysql:dbname=*****;host=********'; $user='*********'; $password='********'; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES utf8'); $sql='SELECT name FROM mst_staff WHERE code=? AND password=?'; $stmt=$dbh->prepare($sql); $data[]=$staff_code; $data[]=$staff_pass; $stmt->execute($data); $dbh = null; $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { print'スタッフコードかパスワードが違います<br/>'; print'<a href="staff_login.html">戻る</a>'; } else { header('Location: staff_top.php'); } } catch(Exception $e) { print'エラーが発生しました'; exit(); } ?> 解決方法、ご指摘ございましたら教えていただきたいです。

    • ベストアンサー
    • PHP
  • phpの間違いが解りません!!!!!!!

    PHP初心者です。 現在テキストを参考にお問い合わせフォームを制作しているのですが いくら見直してもHTMLの画像部分は表示されるのですが、 PHP部分が表示されません!! php自体が間違ってると真っ白になると思うのですが… 点線で囲った中央部分だけだと問題なく表示されますが、 データーベースへ送るという上と下の部分を追加すると表示がなくなります。 ご指摘頂けると嬉しいです。 よろしくお願いします。 <?php $dsh='mysqul:dbname=(※データベース名);host=(※ホスト名)'; $user='(※ユーザー名)'; $password='(※パスワード)'; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES UTF-8'); ーーーーーーーーーー真ん中の部分だけだと問題なく表示されます。ーーー $nickname=$_POST['nickname']; $email=$_POST['email']; $naiyou=$_POST['naiyou']; print $nickname; print'様<br/>'; print'お問い合わせありがとうございました。<br/>'; print'お問い合わせ内容【'; print $naiyou; print'】<br/>'; print $email; print'に確認のメールを送りましたのでご確認ください。'; $mail_sub='メールが送信されました。'; $mail_body=$nickname."様へアンケートありがとうございました。"; $mail_body=html_entity_decode($mail_body,ENT_QUOTES,"UTF-8"); $mail_head='From:××××××@××××.com'; mb_language('japanese'); mb_internal_encoding("UTF-8"); mb_send_mail($email,$mail_sub,$mail_body,$mail_head); ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー $sql='INSERT INTO syusyoku(nickname,email,naiyou)VALUES("'.$nickname.'","'.$email.'","'.$naiyou.'")'; $stmt=$dbh->prepare($sql); $stmt->execute(); $dbh=null; ?> ※部分は伏せていますが、おそらくあってると思います… よろしくお願いします。

    • ベストアンサー
    • PHP
  • 複数条件検索のWHERE句の使い方がわかりません。

    初めましてphp,mysql共に初心者です。 現在以下のような問題で頭を抱えています。 映画のデータベースを使った映画の検索システムを考えています。 フィールドはid,sakuhinmei,cast1,cast2,cast3,kantokuの6つです。 検索方法として作品名やキャストなどを一つのフォームを用いて検索する複数条件を用いたシステムを考えています。 そこで以下のようなソースを作りました。 <?php $dsn='mysql:dbname=testdb;host=localhost'; $user='root'; $password='koro0401'; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES UTF-8'); $kensakuwords=$_POST['kensakuwords']; $sql="SELECT * FROM eiga WHERE (sakuhinmei=.'$kensakuwords'.) OR (cast1=.'$kensakuwords'.) OR (cast2=.'$kensakuwords'.) OR (cast3 =.'$kensakuwords'.) OR (kantoku=.'$kensakuwords'.)"; $stmt=$dbh->prepare($sql); $stmt->execute(); while(1) { $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { break; } print$rec['id']; print$rec['sakuhinmei']; print$rec['cast1']; print$rec['cast2']; print$rec['cast3']; print$rec['kantoku']; print'<br/>'; } $dbh=null; ?> 実行してみるとエラーはでないのですが、何も表示されません。いろいろネットで調べてためしてはみたのですが、自分では何が違うのかわかりませんでした。 どうかphp、mysqlに詳しい方々、お力添えお願いします。 初心者でもわかりやすい解答をお願いします。

  • 素材を比較して共通項目数をデータベースに格納したい

    PHPで素材の特徴の共通項目数を求めるシステムを作っていますが結果がデータベースに格納されずに困っています。 データベース'compare'のテーブル'answers'に既にいくつかの回答(データ)が入っている状態で質問formから受け取った質問の回答をテーブル'answers'のデータと比較し幾つ共通項目があるかをデータベース'compare'の'result'テーブルにidナンバー(idフィールド)と共通項目数(commonsフィールド)を格納することを目指いしています。 【質問form】 <html> <head> <meta charset="UTF-8"> <title>特徴マッチ度</title> </head> <body> <form method="post" action="question_check.php"> 熱に強い<br/> <input type="radio" name="q1" value="1">Yes <input type="radio" name="q1" value="2">No<br/> 柔軟性がある<br/> <input type="radio" name="q2" value="1">Yes <input type="radio" name="q2" value="2">No<br/> 1、手で破く事ができる2、手で破く事はできない3鋏を使えば切れる4、鋏でも切れない<br/> <input type="radio" name="q3" value="1">1 <input type="radio" name="q3" value="2">2<input type="radio" name="q3" value="3">3 <input type="radio" name="q3" value="4">4<br/> <br/> <input type="button" onclick="history.back()" value="戻る"> <input type="submit" value="OK"> </form> </body> </html> 【回答チェックPHP(略)をし値を送る】 <form method="post" action="compare.php">'; print'<input type="hidden" name="q1" value="'.$question1.'">'; print'<input type="hidden" name="q2" value="'.$question2.'">'; print'<input type="hidden" name="q3" value="'.$question3.'">'; print'<br/>'; print'<input type="button" onclick="history.back()" value="戻る">'; print'<input type="submit" value="OK">'; print'</form>'; 【試したPHP】 <html> <head> <meta charaset="UTF8"> <title>素材比較</title> </head> <body> <?php $question1=$_POST['q1']; $question2=$_POST['q2']; $question3=$_POST['q3']; $dsn='mysql:dbname=compare;host=localhost'; $user='root'; $password=''; $dbh=new PDO($dsn, $user, $password); $dbh->query('SET NAMES utf8'); $sql='SELECT code,r1,r2,r3 FROM answers WHERE 1'; $stmt=$dbh->prepare($sql); $stmt->execute(); $dbh=null; //回答が共通する計を求める。 while(true) { $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { break; } if($rec['r1']==$question1) { $s=$s+1; } else { $s=0; } if($rec['r2']==$question2) { $s=$s+1; } if($rec['r3']==$question3) { $s=$s+1; } //試した一例 $dsn='mysql:dbname=compare;host=localhost'; $user='root'; $password=''; $dbh=new PDO($dsn, $user, $password); $dbh->query('SET NAMES utf8'); $sql = "INSERT INTO results (id, commons) VALUES (:id, :commons)"; $stmt = $dbh->prepare($sql); $id= array($rec['code']=>$s); // foreachで挿入する値を1つずつループ処理 foreach ($id as $key => $s) { // 連想配列のキーを :name に、値を :commons にセットし、executeでSQLを実行 $stmt->execute(array(':id' => $key, ':commons' => $s)); } $s=0; } //新規の素材の回答をテーブルanswersの最後に格納。 $dsn='mysql:dbname=kachikan;host=localhost'; $user='root'; $password=''; $dbh=new PDO($dsn, $user, $password); $dbh->query('SET NAMES utf8'); $sql='INSERT INTO answers(r1,r2,r3) VALUES (?,?,?)'; $stmt=$dbh->prepare($sql); $data[]=$question1; $data[]=$question2; $data[]=$question3; $stmt->execute($data); $dch=null; ?> </body> </html> 【得たい結果】 テーブル'answers'にすでに3つの素材の特徴の回答が下記の様に入っていたとします。 code | r1 | r2 | r3 | 1 | 2 | 1 | 4 | 2 | 1 | 2 | 3 | 3 | 2 | 3 | 1 | 新規に1つの素材(code 4)の回答(2,2,4)をformから送った場合 ccode 4とcode 1の共通項目はr1とr3で共通項目数は2。 code 4とcode 2の共通項目はr2のみで共通項目数は1。 code 4とcode 3の共通項目はr1のみで共通項目数は1。 テーブル'results'には id | commons| 1 | 2 | 2 | 1 | 3 | 1 | という結果が格納されてほしいのですが(codeとidの内容は同じで同一の素材です)テーブル'results'に値が格納されません。 テーブル'answers'にはcode 4の回答を最後に格納して code | r1 | r2 | r3 | 1 | 2 | 1 | 4 | 2 | 1 | 2 | 3 | 3 | 2 | 3 | 1 | 4 | 2 | 2 | 4 | と言う結果になることを求めています。 どなたかお助けください。

    • ベストアンサー
    • MySQL
  • ページの文字コードがUTF-8にならない

    PHP Version 5.1.6を使っています。 次のようにして、文字コードをUTF-8にしてコードもUTF-8で保存してアップロードし、 ページを表示しようとするとなぜか文字コードがShift_JISになったままで 何も表示されません。 ただ表示させてる"aaa・・・"をもう1行加えるとちゃんとUTF-8になり表示されます。 これから考えられる原因はなんなのでしょうか? print "<html>\n"; print "<head>\n"; print "<title>サンプル</title>\n"; print "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />\n"; print "</head>\n"; print "<body>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "</body>\n"; print "</html>\n";

    • ベストアンサー
    • PHP
  • PHPでtableをループさせたい!

    【急募!】PHPでMysqlから取り出した値をHTMLのtableで出力したい。 うまくいかなくて困ってます。 今回で2度目の質問となります。今回も急いでおります。 現在、プログラムの勉強をして半年近くになります。本日3/3までに作成を完了しなければならず困っております。 何日か掛けて調べたのですが、まだまだ勉強不足の為に理解が出来ませんでした。 PHPで作成をしております。データベースから取り出した値をHTMLで作成したtableに出力後、tableをデータベースに入っている数だけループさせたいです。※イメージ画像あり おそらくwhile分でループさせれば良いとういうのは理解できるのですが、テーブル自体を増やすやりかたかが解りません。 while(データーベースの値をループさせてひとつずつ出力する。,テーブルも同じ数出力する) 全部取り出したら break で抜ける......となると思うのですが、書き方か解りません。 mysql_fetch_arrayというものもあるようですがまだ理解ができません。 答え合わせになってしまうのが恐縮でございますが、答え合わせのコードを頂けましたら嬉しいです。 まだ理解が浅いため、質問の内容に理解が出来なければ、ご連絡を頂きましたら改善改良をします。 お恥ずかしいですが、ソースを乗せさせて頂きますので宜しくお願い致します。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href="css/style2.css" rel="stylesheet" type="text/css"> <title>管理画面</title> </head> <body> <div id="main"> <?php $dsn='mysql:dbname=motorlinks;host=localhost'; $user='root'; $password=''; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES utf8'); $sql='SELECT code,gazou,name,shiyo,price,shiharai,first,sample,comment FROM pone WHERE 1'; $stmt=$dbh->prepare($sql); $stmt->execute(); print'製品一覧<br><br>'; print'<form method="post"action="pone_branch.php">'; ?> <?php while(true) { $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { break; } print $rec['gazou']; print $rec['name']; print $rec['shiyo']; print $rec['price'].'円'; print $rec['shiharai']; print $rec['first']; print $rec['sample']; print $rec['comment']; print'<br>'; }?> <table width="800" border="1" cellpadding="0"> <?php print'<input type="radio"name="ponecode"value="'.$rec['code'].'">'; ?> <tr> <th colspan="2" rowspan="4" scope="col"><?php '<img src="gazou/burank.jpg" width="200" height="150" alt=""/>'; ?></th> <th width="162" height="4" scope="col">Product Name</th> <th width="162" height="4" scope="col">Specification</th> <th width="162" height="4" scope="col">Price</th> <th width="162" height="4" scope="col">Payment</th> </tr> <tr> <td height="63">&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <th width="162" height="4" scope="col">First Order</th> <th width="162" height="4" scope="col">Sample</th> <th width="162" height="4" scope="col">Comment</th> <th width="162" height="4" scope="col">Contact</th> </tr> <tr> <td height=63">&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> </table> <?php print'<br>'; print'<input type="submit" name="disp" value="参照">'; print'<input type="submit" name="add" value="追加">'; print'<input type="submit" name="edit" value="修正">'; print'<input type="submit" name="delete" value="削除">'; print'</form>'; ?> <br> <a href="index_mo.html">トップメニューへ</a><br> </form> </div> </body> </html>

    • ベストアンサー
    • PHP
  • 文字化けが解決できません。お願いします

    文字化けが解決できません 使用データベースはSQLServer2008です 対象カラムはcharです データベースの照合順序はJapanese_CI_ASです ブラウザのエンコードをUTF-8にするとprint_r($row);の部分は文字化けせずに表示 されますprint("砂糖");は文字化けします ブラウザの標準文字コード??SJISだとprint_r($row);文字化けします print("砂糖");は文字化けしません ということはSQLServerのデータの文字コードがUTF-8ということなのでしょうか SJISだと思うのですが。 そこで、SQLServerがUTF-8だと仮定してprint_r(mb_convert_encoding($row, "SJIS","UTF-8")); というプログラムを書いたのですが結果は同じでブラウザのエンコードをSJISにすると 文字化けしていまいます どうすればブラウザのエンコードがSJISで文字化けしないようになるのでしょうか 教えてください。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift-SJIS"> <title>test</title> </head> <body> <?php try{ $dsn ='sqlsrv:server=.\sqlexpress;database=sample'; $dbname = "sample"; $user = "sa"; $password ="manager"; //$dbh = new PDO("mssql:host=.\\SQLEXPRESS;dbname=sample",$user,$password); $dbh = new PDO($dsn,$user,$password); $stmt = $dbh->prepare("select * from shohin"); $stmt->execute(); while($row = $stmt->fetch()){ //print_r($row); //print_r(mb_convert_encoding($row, "SJIS","UTF-8")); print_r($row); } unset($dbh); unset($stmt); // foreach($dbh -> query($sql) as $row) // print($row["id"]); // print($row["name"]); // echo "接続できました"; // } // $dbh = null; print("砂糖"); }catch(PDOException $e){ print("Failed to get DB handle:aaakkka".$e->getMessage()."\n"); phpinfo(); exit(); } ?> </body> </html>

    • ベストアンサー
    • PHP
  • UPDATEできない

    PHP初心者です。 先日より、PHPプログラムを勉強しており、「参照」、「追加」、「修正」、「削除」の一連の流れを理解しました。 スタッフ登録をするという仮定で、上記流れをPHPでできるようになり、データベースの更新もできるようになりました。 登録 → 表示 や、一覧を表示して、ラジオボタンで選んだスタッフの情報修正などです。 現在、上記流れの延長として、商品の登録から、修正、削除に挑戦していますが、情報修正時、ページはスタッフ登録と同じように最後までエラー無く進みますが、データベースが更新されません。 何故初心者の為、解決策の探し方すら判らない為困っています。 どなたかお解りになる方、恐れ入りますがご教授頂ければ幸いです。 データを修正するソースです <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>どっとこむ</title> </head> <body> <?php try { $pro_code = $_POST['code']; $pro_name = $_POST['name']; $pro_price = $_POST['price']; $pro_code = htmlspecialchars($pro_code); $pro_name = htmlspecialchars($pro_name); $pro_pass = htmlspecialchars($pro_price); $dsn = 'mysql:dbname=xxxx;host=xxxxx'; $user = 'userid'; $password = 'password'; $dbh = new PDO($dsn,$user, $password); $dbh->query('SET NAMES utf8'); $sql = 'UPDATE mst_productSET name=?,price=? WHERE code=?'; $stmt = $dbh->prepare($sql); $data[]=$pro_name; $data[]=$pro_price; $data[] = $pro_code; $stmt->execute($data); $dbh = null; print 'を追加しました。<br />'; } catch (Exception $e) { print'ただいま障害により大変ご迷惑をお掛けしております。'; exit(); } ?> <a href="pro_list.php">戻る</a> </body> </html> 上記表示される前のページ(修正する情報を入力するページ)から、上記ページまではデータが渡っている状態です。 <?php print $pro_name; ?> のようにすると、渡された文字列が表示されます。 わかり難い説明で恐縮です。 宜しくお願い致します。

    • 締切済み
    • PHP