mysql_fetch_assoc()の非推奨について

このQ&Aのポイント
  • php初心者の方がmysql_fetch_assoc()について調べたら非推奨と書かれていたので、今後のコーディングについてどうするべきか悩んでいます。
  • 登録画面で<select>タグを使用してスタッフの名前を表示したいのですが、mysql_fetch_assoc()の代替方法について教えてください。
  • phpの学習を進める上でmysqlの知識は必要ですか?初心者なのでわかりやすく教えてほしいです。
回答を見る
  • ベストアンサー

mysql_fetch_assoc()の非推奨

phpを始めてまだ数ヶ月の初心者です。 (少々表現が変なところはお許し下さい。) ■やりたい事 phpである登録画面を作成しています。サーバーには スタッフのデーターが入っているテーブルがあります。 (1)DBに登録してあるスタッフの名前を全部引っ張り出す(mysql)。 (2)登録画面の入力項目の1つとして(登録スタッフ)があり、  そこを<select>で上記(1)から取り出したものを自動で表示したい。 ところが、mysql_fetch_assoc()について調べたら、非推奨などと載っていて (内容がよく理解できませんでしたが)どのように記述したら、将来困らない  コーディングとなりますか? <select name="register"> <?php $sql = "select count_ID, name from reserve"; $result = mysql_query($sql); while ($row = mysql_fetch_assoc($result)) { echo "<option value=\"".$row["count_ID"]."\">" .$row["name"]."</option>"; } ?> </select> 今からphpの知識を少しづつつけていくにあたり、非常に混乱して います。mysqlをそもそも学んでいてもしょうがないということでは ないですよね。本当に初心者なので、お手数ですがわかりやすい表現 でお願いします。 よろしくお願いします。

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

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

すでにネイティブなMySQL関数は非推奨です。 http://www.php.net/manual/ja/intro.mysql.php 後継としてMySQLi関数がありますし、PDOを使うことも多いです。 http://www.php.net/manual/ja/book.mysqli.php http://www.php.net/manual/ja/book.pdo.php 今からならPDOで覚えておくのが吉だと思います。

hayaken73
質問者

お礼

すばやいご回答感謝します。 ご説明いただいた言葉が少々難しいので、参考URLをもとに 勉強してみます。 ありがとうございました。

関連するQ&A

  • mySQLで結果が無いときの処理

    $sql = "select * from test "; $sql .= "where id='".$_POST["id"]."' and pwd='".$_POST["pwd"]."'"; $result = mysql_query($sql); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { if($row){ $msg = "OK"; } } としていますが、NGのときってどういう風にしたらいいのでしょうか? 基本的なことですみませんが、教えてください。

    • ベストアンサー
    • PHP
  • mysqlからphpに表示ですべての項目を出したい

    phpとmysqlの勉強をしているのですが、出したい項目がでてきてくれません。 今mysqlでidとnameとpriceの項目を作っているのですが、以下だとどうしてもnameしか出てきてくれません。 どうすれば3つの項目がでてくれますでしょうか? よろしくお願いします。 <?     mysql_connect('localhost' , 'root' , '') or die(mysql_error());     mysql_select_db('db1'); mysql_query('SET NAMES UTF8'); $sql="SELECT * FROM syouhin"; $res=mysql_query($sql); $options=""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ $options.="<input type=\"radio\" name=\"syouhin1\" value='{$row['id']}' checked>        {$row['name']}\n<br>"; } $select="{$options}</select>\n";     print $select; ?>

    • ベストアンサー
    • PHP
  • mysql_fetch_array の関数について

    はじめまして、お世話になります。 php/SQL共に初心者レベルなのですが、ご指導ください。 mysql_fetch_array のSQLの結果が複数件ある場合なのですが、 参考書通り $sql = "select * from category where parent_id = '0' order by category_name"; $result = mysql_query( $sql ); while ( $category = mysql_fetch_array( $result ) ) echo "<a href=result.php?category_id=${category['category_id']}>${category['category_name']}</a> | "; とコーディングしたものの、 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/アカウント名/public_html/アカウント名/topbar.php on line 26 とエラーが表示され困っています。 参考書にもエラーの詳細など記載れていませんし、他の媒体での色々と答えを探してはみたものの意味がわかりません。 解る方いらっしゃいましたら是非ご指導ください。 宜しくお願いします。

    • 締切済み
    • PHP
  • PHP mysql_fetch_assocについて

    いつもお世話になっております。早速ですが下記のソースにて、SQLのクエリではレコードが2行(phpMyAdminで確認)出てきます。何故whileが繰り返してくれないのか分からず悩んでおります。($counterも2で止まる)長文でお手数ですがどうかお力添えの程お願い致します。(文字数制限にてSQL文は省略してます) $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<form method=\"POST\" action=\"edit.php\">"; echo "<table class=\"login mb10\" border=\"1\" cellspacing=\"0\" width=\"650\">"; echo "<tr><td class=\"form\">日にち</td><td class=\"form\" colspan=\"3\">".$date."</td></tr>"; $counter = 1; //これが繰り返してくれない while($stadium = mysql_fetch_assoc($res)){ //2回目以降はtableタグを付加 if($counter > 1){echo "<table>";} echo "<tr><td>試合順</td><td colspan=\"2\">".$counter."試合目</td><td>対象</td></tr>"; echo "<tr><td>対戦カード・時間</td><td>"; //チーム情報 $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"team1_".$counter."\">\n"; while($team1 = mysql_fetch_assoc($res)){ echo "<option value=\"".$team1["team_id"]."\""; if($row["team1"] == $team1["team_id"]){echo " selected";} echo ">".$team1["team_name"]."</option>\n"; } echo "</select>対"; $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"team2_".$counter."\">\n"; while($team2 = mysql_fetch_assoc($res)){ echo "<option value=\"".$team2["team_id"]."\""; if($stadium["team2"] == $team2["team_id"]){echo " selected";} echo ">".$team2["team_name"]."</option>\n"; } echo "</select></td>\n"; //時刻を反転させる $date_s = strrev($stadium["schedule_time"]); $minute_s = strrev(substr($date_s,0,2)); $hour_s = strrev(substr($date_s,2,2)); echo "<td><select name=\"hour_".$counter."\">"; $hour = 8; while($hour < 22){ echo "<option value=\"".$hour."\" "; if($hour_s == $hour){echo "selected";} echo ">".$hour."</option>"; $hour ++; } echo "</select>時"; echo "<select name=\"minute_1\">"; $minute = 0; while($minute < 60){ echo "<option value=\"".$minute."\" "; if($minute_s == $minute){echo "selected";} echo ">".$minute."</option>"; $minute = $minute + 15; } echo "</select>分</td>\n"; //チェック echo "<td rowspan=\"2\"><input type=\"checkbox\" name=\"delete_".$counter."\" value=\"1\"></td></tr>\n"; echo "<tr><td class=\"form\">審判・場所</td><td>"; //チーム情報 $sql = "SELECT * 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"umpire1_".$counter."\">"; while($umpire1 = mysql_fetch_assoc($res)){ echo "<option value=\"".$umpire1["team_id"]."\" "; if($umpire1["team_id"] == $stadium["umpire1"]){echo "selected";} echo ">".$umpire1["team_name"]."</option>"; } echo "</select>&"; $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"umpire2_".$counter."\">"; while($umpire2 = mysql_fetch_assoc($res)){ echo "<option value=\"".$umpire2["team_id"]."\" "; if($umpire2["team_id"] == $stadium["umpire2"]){echo "selected";} echo ">".$umpire2["team_name"]."</option>"; } echo "</select></td>\n"; //球場データ $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<td>"; if($counter == 1){ echo "<select name=\"stadium_".$counter."\">"; while($sta = mysql_fetch_assoc($res)){ echo "<option value=\"".$sta["stadium_id"]."\" "; if($sta["stadium_id"] == $stadium["stadium"]){echo "selected";} echo ">".$sta["stadium_name"]."</option>"; } echo "</select>"; }else{ echo "&nbsp;"; } echo "</td></tr>\n"; echo "</table>"; $counter++; } echo "<table>変更するテーブル</table>"; echo "</form>";

    • ベストアンサー
    • PHP
  • mysql+phpをつかったカートつくり。

    こんにちは、php+mysqlを勉強しだして。日が浅いです。 いき詰まりました。どなたかおしえてください。いろいろとサイト検索してみたんですけど みつかりません。 ショッピングカートを作ろうとおもっています。 ーーー中略ーーー while($rec = mysql_fetch_array($result,MYSQL_ASSOC)){ print "<form name=\"form1\" method=\"POST\" action=\"link1_1.php\">"; print "<tr><td>"; print $rec['id']; print "</td><td>"; print $rec['cid']; print "</td><td>"; print $rec['pr']; print "\\</td><td>"; print "<select name=\"mny\"><option value=\"1\">1</option>"; print "<option value=\"2\">2</option>"; print "<option value=\"10\">10</option>"; print "</select></td><td>"; print "<input type=\"submit\" name=\"cart\" value=\"カートへ\">"; print "<td/></tr></from>"; } print "</table>"; 上記の文で、while文をつかって 商品を表示させることはできました。 問題は、 カートがおされたときの処理ができません;; カートの値はどうやって 設定したらよいのでしょうか?  うまく表現できなくて すみません。 if(isset($_POST['cart'])){  //カートがおされたとき $sql = "select max(ju_id) from table1";//最大値を取得 $result = mysql_query($sql); $row = mysql_num_rows($result); if($row != 0) { $ary = mysql_fetch_array($result); $ju_id = $ary[0] + 1; //$number = $ary[0] + 1;// 登録レコードのを生成 } $sql = "insert into jucyu set ju_id = $ju_id "; } 商品を表示させて、個数等指定して、カートへを 押したら、 一回目は表示されるんですが、うまく、mysqlへ書き込みができません。  うまく表現できなくて すみません。

  • mysql_fetch_objectの書き方を教えて下さい。

    PHP5.1.6を使用しています。 次のスクリプトを書きましたが、データが取得できません。 $conn_id = mysql_connect("localhost","***","***") or die('Error connecting to MySQL'); mysql_select_db('***',$conn_id); $query ="SELECT abcd,efgh from XYZ where name='taro'"; $result = mysql_query($query,$conn_id) or die($query.'failed('.mysql_error().')'); $ydata = array(); $xdata = array(); while($row = mysql_fetch_array($result)){  ← 11行目 array_push($ydata, $row->efgh);   ← 12行目 array_push($xdata, $row->abcd);   ← 13行目 } エラーログを見ると、 PHP Notice: Trying to get property of non-object in /***/***/****.php on line 12 PHP Notice: Trying to get property of non-object in /***/***/****.php on line 13 となっています。 var_dump($row) 句を入れ、ブラウザから見ると、当然ながら(?)bool(false) と表示されます。 11行目の mysql_fetch_array を mysql_fetch_object に入れ換えて while($row = mysql_fetch_object($result)){ としても結果は変わりません。 リファレンスマニュアルやサンプルを参照して種々手直ししましたが、今ひとつ正解に辿り着けません。 データを取得して配列に入れるには、どのように修正すれば良いか、教えて頂けませんでしょうか。

    • ベストアンサー
    • PHP
  • mysqlについてサンプルなど教えてもらえませんか

    すいません。今phpなどを使いウェブサイトを作っているのですが、データベースがどうしても 必要となり、参考サイトなどを見ながら作りました。 ほとんどできたのですが、最後に一部データベースの関数などでわからない事があり困っています。 (正直私はプログラムはphp程度が少し分かる程度で、データベースも単純な使い方しかしない 予定なので参考サイトをざっと見ただけでmysqlの事がほとんど分かりません) ググってそれらしい物を探してはいるのですが、私がやりたい事はデータベースから 件数を取りたいだけです。 取った件数をphpで表示したいのですが、何時間やっても良くわかりません。 申し訳ないんですが取り出した後その件数をphpのechoで表示するまでをサンプルとして書いてもらえませんか?(可能であれば「ここでこのような処理が行われている」とコメントがもらえると助かります) データベース関係はphpと違って初心者用のサイトなども無く、書いてある事がほとんど分かりません。 (ここでSELECT COUNT(*)を使うと教えてもらったのですが、SELECT COUNT(*)でググっても サンプルなども出てきません) $pdo = new PDO("mysql:dbname=aaa", "root"); $pdo->query("set names utf8;"); // ------------------------------------------------ $sql = $pdo->query("SELECT COUNT(*) FROM bbb"); $stmt = $pdo->query($sql); $stmt->execute(); $count=$stmt->rowCount(); echo $count; ----------------------------------------------- $result = mysql_query("SELECT COUNT(*) FROM bbb"); $row = mysql_fetch_assoc( $result ); echo $row;

    • ベストアンサー
    • MySQL
  • PHP MySQLでエラーがでてしまいます。

    PHP MySQLからデータを取得したいのですが、以下のエラーが出てしまい原因が分かりません。 詳しい方お願い致します。 <b>Warning</b>: json_encode() expects exactly 1 parameter, 2 given in <b>/home/users/2/***.**-********/web/****************/php/seupPharmacyData.php</b> on line <b>21</b><br /> エラーが出るコードは以下になります。 <?php include "db.php"; $sql = "SELECT * FROM user_data"; $query = mysql_query($sql, $db) or die("クエリの送信に失敗しました。<br />SQL:".$sql); $result= array(); while ($row = mysql_fetch_object($query)) { $result[] = array( 'name1' => $row->name1, 'name2' => $row->name2, 'name3' => $row->name3, 'id' => $row->id, ); } //jsonとして出力 header('Content-type:application/json; charset=UTF-8'); echo json_encode($result,JSON_UNESCAPED_UNICODE); ?>

    • ベストアンサー
    • PHP
  • MYSQLでgroup by を教えてください。

    まだ初心者なんです。よろしくお願いいたします。 テーブル$tbl_nameに日付date コラムに (2009-11-3 14:25:06).(2009-11-3 11:25:06). (2009-11-5 12:25:06).(... ....と年齢 ageコラムに (18)(19)(20)... 性別コラムage に (danshi)(jyoshi) が入っています。 これを日付別 に内容が存在するだけ出力したいのです。 出力内容は(18)→25、(19)→13、(20)→7、の数だけ、 同様に(danshi)→20、(jyoshi)→25、というように 〇月〇日18才は25人、19才は13人、20才は7人、 男子は20人、女子は25人と出したいのです。 $sql = "SELECT 'age',count(age) FROM $tbl_name group by 'date'"; $result = mysql_query($sql, $db) or die("クエリの送信に失敗しました。<br />SQL:".$sql); while ($row = mysql_fetch_assoc($result)){ $age .=$row;} 等記入しているのですが、何とも動きませんのです。 どうしたらよろしいものでしょう。よろしくお願いいたします。

  • MYSQLから画像を取り出したい

    PHPとMYSQLにて画像を表示したいのですが、 PHPmyadminにてBLOB型にJPG画像を手動で 入れて有ります、そこで下記のように取り出そうとしたのですが、文字の羅列が長く表示され、画像はでません。 $result = mysql_query("SELECT * FROM test"); $row = mysql_fetch_assoc($result); print ($row['image']); 文字の羅列が出るので、データははいっているとおもうのですが、取り出し方が悪いのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう