• ベストアンサー

php+mysql sql文実行について

データベースに「日付」「文章」を登録し、今日の日付に対応した文章が表示される仕組み(正確には朝の5時に変更)を作りたいと考えております。 以前は日付をタイトルとしたtxtファイルを作成し、その中身を読み込ませる仕組みだったのですが、今回mysqlを使用して同様のものを作成できればと思い試行錯誤しております。 データベースは 「maxim」というテーブルの中に、 date   main 071018 (文章)  071019 (文章) 071020 (文章) 071021 (文章) のように格納してあります。 date:主キー、varchar(6)、not null main:text、not null 作成したスクリプトは以下の通りですが、これを実行すると「エラー」が表示されてしまいます。 $dateによる文字列の取得、DBへの接続までは、echo、or dieにて確認済、またsql文をphpMyadminから実行した場合($dateを071018に書き換えて)、こちらも正常に取得できたのですが。 $dateをsql文に記述する際の囲みの問題かとも思い、「''」や「()」や「[]」で囲ってもみたのですがだめでした。 どなたかお知恵を拝借できますでしょうか。 宜しくお願い致します。 *サーバー、mysqlはともに「ロリポップ」を使用しております。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>テスト</title> </head> <body> <?php $date=strftime("%y%m%d",time()-5*3600); $server="mysql**.***.jp"; $dbname="********"; $user="********"; $pass="*****"; $conn = mysql_connect($server,$user,$pass); $sql="SELECT main FROM maxim WHERE date = '$date'"; $res=mysql_query($sql,$conn) or die("エラー"); echo "<b>$res</b>"; mysql_close($conn); ?> </body> </html>

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

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

  • ベストアンサー
  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

DBが選択されていません。 $conn = mysql_connect($server,$user,$pass); ↓ $conn = mysql_connect($server,$user,$pass); mysql_select_db($dbname,$conn); // ←これが足らない ---------------------------------- echo "<b>$res</b>"; $resはmysqlリソースが入ってます。実データではないです。 // リソースとは接続IDみたいなものと捉えるといいです。違いますけど。 $ret = array(); // 実データのバッファ while($row = mysql_fetch_assoc($conn)) {  $row_date = $row["date"];  $row_main = $row["main"];  $ret[$row_date] = $row_main; } print_r($ret); 上記のようにしないと実データは取れません。 mysql_fetch_assoc関数がキモです。 ------ あと蛇足ですが、日付は文字列でなくdate型で格納し、 mysqlのdate_format関数などでこねくり回したほうがよいです。 「そういう仕様」と決め付けられる環境にあるならいいですが^^;

その他の回答 (4)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.5

>ちなみに、返ってくるレコードは1つだけなのですが、この場合には直接echoしてしまってよろしいのでしょうか? 一レコードという大前提が絶対100%確実に揺るがないのであれば問題ないです。 ただ、その場合はNo.1の方の言うとおりLIMIT文を追加し取得するレコード数を制限したり GROUP BYを用いて取得するレコードを単一にしたりするなどの工夫をしたほうがよい、かも知れません。 とりあえず動けばいいや、と言った感じれあれば改修の必要はありません^^; >また、データ形式をdate型にした場合のメリットなど、お教えいただけると幸いです。 もしもチーム開発をすることになった場合、おそらく先輩プログラマに小一時間説教を食らうでしょうorz 当方派遣なのですが、アホ設計した正社員にお説教したら飲みで逆襲されましたがそれは別の話。 メリットとしては ・他人との共有が容易 ・範囲指定の抽出が明示的で読みやすい ・入力の際、文字列型と違い不正入力に厳密(AAAA年BB月禿日とかは絶対に入らない) と言った感じですね。 もしそのカラムに日付以外の文字列も入る可能性がある、というのであれば フラグ用のカラムを追加するなどの対応が正しいです。 string型でこういうフォーマットで入る、というような独自仕様は他人だけでなく未来の自分すら混乱させます。 csv型やiniファイル的な「一般的なもの」であれば問題はないのですが。 >甘えすぎですかね? 知ろうとすることは良いことだとおもいますよ。 大切なのは自分が知りたいことに対して無知であることを自覚することです。 それと知りたいことに対して貪欲であることです。 ・・・受け売りですが

nori1969
質問者

お礼

またしてもお礼が遅くなり申し訳ございません。 分かりやすく丁寧な解説に感謝いたします。 本当に有難く思っております。 (1)レコードは1つのみですので、LIMIT文を追加する方向で改善してみます。 (2)データ形式につきましては、確かに仰る通りですね。 これを作る際に、「他人との共有」「継続的な仕様」という概念が欠けていたように思い、反省しております。 date型というものがある以上、日付はこの型に変更いたします。 厚かましい甘えにも応えてくださり、ありがとうございました。 こういった質問の場で、快く回答してくださる方がいらっしゃるのはとても心強く、また温かい気持ちになります。 いつか私も恩返しできるよう、勉強を続けてゆきたいと思います。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.4

ソースミスった。すんまそん。 mysql_fetch_assocの引数はクエリリソースを渡してあげてください。 // 帰ってくるレコードがひとつだけという前提ならばwhileする必要はないです。 while($row = mysql_fetch_assoc($conn)) { ↓   while($row = mysql_fetch_assoc($res)) {

nori1969
質問者

お礼

お礼が遅くなり、申し訳ございません。 No3と併せて、大変参考となるアドバイスをありがとうございます。 (1)データベース接続の不備 (2)配列への格納 いずれも具体的なソースをいただき、また、訂正もいただき、感謝いたします。 お陰様で以下のようなスクリプトで意図した通りに動作させることができました。 重ね重ね感謝いたします。 ちなみに、返ってくるレコードは1つだけなのですが、この場合には直接echoしてしまってよろしいのでしょうか? もしお時間あればご教授願えるとありがたいです。 また、データ形式をdate型にした場合のメリットなど、お教えいただけると幸いです。 甘えすぎですかね? <?php $date=strftime("%y%m%d",time()-5*3600); $server="mysql**.***.jp"; $dbname="********"; $user="********"; $pass="*****"; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql="SELECT main FROM maxim WHERE date = $date"; $res=mysql_query($sql); while($row = mysql_fetch_assoc($res)) { $row_con=mb_convert_encoding($row["main"], "shift_jis", "auto"); echo $row_con; } mysql_close($conn); ?>

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

WHERE date = '$date' とありますが WHERE `date` = '$date' としてみてはいかがですか?

nori1969
質問者

お礼

お礼が遅くなり、申し訳ございません。 (1)WHERE指定が均一でない点 参考にさせていただき、逆に''を外してみました。 No1の方へのお礼と重複しますが、以下のスクリプトで意図した通りに動作させることが出来ました。 ありがとうございます。 また機会がありましたら、ご教授いただきたいと思います。 よろしくお願い致します。 <?php $date=strftime("%y%m%d",time()-5*3600); $server="mysql**.***.jp"; $dbname="********"; $user="********"; $pass="*****"; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql="SELECT main FROM maxim WHERE date = $date"; $res=mysql_query($sql); while($row = mysql_fetch_assoc($res)) { $row_con=mb_convert_encoding($row["main"], "shift_jis", "auto"); echo $row_con; } mysql_close($conn); ?>

  • giraffa96
  • ベストアンサー率70% (106/150)
回答No.1

試していませんが、ざっと見た感じ $dbnameがどこにも使われていないですね。 とりあえずif(!$conn){//MySQL接続エラー}、とした上で $conndb = mysql_select_db($dbname); if(!$conndb){//DB接続エラー} ここまでやってMySQLとDBに接続完了です。 mysql_queryにmysql_connectは渡せないのではないかな? http://jp.php.net/manual/ja/function.mysql-query.php なのでクエリ発行の中ではSQL文のみ渡して下さい。 ついでに、クエリ発行しただけだと echo "<b>$res</b>"; だけでは結果が得られません。 mysql_resultかmysql_fetch_rowなどで 中身を配列に入れてから表示させてみてください。 もう一個… echo "<b>$res</b>"; だと$resも<b></b>と同じように ダブルクォーテーションで囲んでしまってるので、 これもこのままでは表示されないと思います。 変数部分を".."で囲むか、別にechoしてあげてください。 細かく言うとLIMIT 1しておいたほうが良いかなぁとか 色々ちょこちょこありますが、 とりあえずここまでやれば動くかと思います。

nori1969
質問者

お礼

お礼が遅くなり、申し訳ございません。 (1)データベースが指定されていない点 (2)mysql_query()中にクエリ文が使用されている点 (3)配列に格納されていない点 (4)echoの指定がおかしい点 いずれも参考にさせていただき、改善を行いました。 結果、以下のようなスクリプトでようやく意図した通り動作させることができました。 ありがとうございます。 本当に助かりました。 「LIMIT1」というのはロックをかけるという意味でしょうか。 お時間ございましたら、ぜひご教授願います。 <?php $date=strftime("%y%m%d",time()-5*3600); $server="mysql**.***.jp"; $dbname="********"; $user="********"; $pass="*****"; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql="SELECT main FROM maxim WHERE date = $date"; $res=mysql_query($sql); while($row = mysql_fetch_assoc($res)) { $row_con=mb_convert_encoding($row["main"], "shift_jis", "auto"); echo $row_con; } mysql_close($conn); ?>

関連するQ&A

  • PHPでデータベース(mySQL)から値を取りだすには

    PHPで値をmySQLに保存するコードを作成するのに 成功したのはいいのですが、値を取り出して 出力するコードがうまく書けません ネットで調べてみたり、参考書を読んで やっているのですがうまくいきません こういうコードを書いたのですが <?php $conn=mysql_connect("localhost", "user", "pass"); if (!$conn) { die('接続失敗です。'.mysql_error()); } mysql_select_db("database", $conn); mysql_query("SET NAMES 'ja-utf8'", $conn); $sql='SELECT caram, FROM table'; $row=mysql_query($sql, $conn); $res=mysql_fetch_assoc($row); echo htmlspecialchars($res, ENT_QUOTES); mysql_close(); ?> どこが間違っているかご指摘いただけると ありがたいです。

    • 締切済み
    • PHP
  • PHP+mySQL認証画面

    サーバーの引っ越しで新しいサーバーにてプログラムの動作確認を行っています。 管理者パネルに入るのに、PHPで作成した認証プログラムでログインしようとすると、入力しても何度も聞いてきて入れません。 旧 MySQL5.0.22   phpMyAdmin2.8.2.4 新 MySQL5.1.69 phpMyAdmin3.5.8.1  IDとパスワードはデータベースで設定。 管理者パネルで変更できるようになっている。 $sv = "**"; $dbname = "**"; $user = "**"; $pass = "**"; ログイン認証 //データベースに接続する $conn = mysql_connect($sv,$user,$pass) or die("接続エラー"); mysql_select_db($dbname) or die("データーベース接続エラー"); $sql = "SELECT id, pass FROM pass_t WHERE pno=1"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $db_user_id=$row['id']; $db_password=$row['pass']; } if(!isset($_SERVER["PHP_AUTH_USER"]) || $_SERVER["PHP_AUTH_USER"] != "$db_user_id" || $_SERVER["PHP_AUTH_PW"] != "$db_password") { header("WWW-Authenticate: Basic realm=\"login\""); header('HTTP/1.0 401 Unauthorized'); echo "ユーザー名またはパスワードが間違っています。<br>"; echo "もう一度はじめからやり直してください。"; exit; } 細々変えて試してみましたが駄目でした。 まだまだわからないことだらけの初心者なので、どうにもならずで 解決策がありましたらぜひ教えて頂けますと幸いです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPで空の値を表示させたくない場合

    PHPでデータベースから値を取り出し 出力させるというスプリクトを作成してるのですが どうしても、入力フォームに空を値を 入れても空の値まで出力されてしまいます こういう場合はどうやって空の値を 弾くコードを書けばいいのか教えて もらえないでしょうか? ちなみに自分が書いたコードはこれです <?php $conn=mysql_connect("localhost", "username", "pass"); if (!$conn) { die('接続失敗です。'.mysql_error()); } mysql_select_db("database", $conn); mysql_query("SET NAMES 'ja-utf8'", $conn); mysql_query("INSERT INTO tablename (caram) VALUES ('$title_a')", $conn); $sql='SELECT title FROM tablename'; $rs=mysql_query($sql, $conn); $res=mysql_fetch_assoc($rs); if (isset($res)) { while ($res=mysql_fetch_assoc($rs)) { echo "<br>"; echo htmlspecialchars($res["caram"], ENT_QUOTES); } } else { echo ""; } mysql_close($conn); ?> どなたかよろしくお願いします。

    • ベストアンサー
    • 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にINSERTできません。

    見よう見まねでやっている超初心者です。 恥を忍んで質問させて頂きます。 古いPHP(2003年ごろ)関連書籍に下記のような include.phpファイルがあるのですが、DB接続失敗、クエリ発行エラー等の エラー表示は出ないのですが(65行目位の、管理者パスワードチェック : _chkPass)でパスワードがMYSQLにINSERTできません。 PHPバージョンの違いなのでしょうか(私のはPHPV5 XAMPPです。) 色々試したりMYSQLの確認をしたのですが、どこがイケないのか、 どこをどう直したらいいのか全く分かりません。 このプログラムに不具合は無いのか?あったとしたらどう直したら動くようになるのか? わかる方どうかご教授の程よろしくお願い致します。 具体的にご教授頂けると大変助かります。 <?php putenv("TZ=JST-9"); define( "_DB_SERVER", "localhost"); define( "_DB_NAME", "cgiweb" ); define( "_DB_UID", "root" ); define( "_DB_PASS", "" ); //--------------------------------------------------------- // DB接続 : _dbConnect //--------------------------------------------------------- function _dbConnect(){ //DB接続 $_conn = mysql_connect( _DB_SERVER, _DB_UID, _DB_PASS) or die('DB接続失敗 = ' . mysql_error()); //DB選択 mysql_select_db( _DB_NAME, $_conn) or die('DB選択失敗 = ' . mysql_error()); return( $_conn ); } //--------------------------------------------------------- // DB切断 : _dbDisconnect //--------------------------------------------------------- function _dbDisconnect( $_conn ){ //DB切断 mysql_close($_conn); } //--------------------------------------------------------- // クエリ発行 : _query //--------------------------------------------------------- function _query( $_conn, $_query ){ $_result=mysql_query($_query,$_conn) or die('クエリ発行エラー = ' .mysql_error()); return( $_result ); } //--------------------------------------------------------- // FETCH実行 : _fetchArray //--------------------------------------------------------- function _fetchArray( $_result ){ $_row = mysql_fetch_array($_result,MYSQL_ASSOC); return( $_row ); } //--------------------------------------------------------- // 結果セット開放 : _freeResult //--------------------------------------------------------- function _freeResult($_result){ mysql_free_result($_result); } //--------------------------------------------------------- // 管理者パスワードチェック : _chkPass // 引数:コネクション // チェック対象パスワード // 戻値:_OK or _NG //--------------------------------------------------------- function _chkPass( $_conn, $_input_pass ){ $_err_str = ""; if( ! $_input_pass ){ //パスワード未設定なら入力画面を表示 $_err_str = "パスワードを入力してください"; } else{ //パスワードがあるなら店舗マスタの内容と比較 $_result = _query( $_conn, "SELECT tenpo_pass FROM tenpo_mst" ); $_row = _fetchArray( $_result ); if( $_row ){ //レコードがあればチェック if( $_input_pass != $_row['tenpo_pass'] ){ //認証NGなので、入力画面を再表示 $_err_str = "パスワードが誤っています"; } }else{ //レコードがなければ入力されたパスワードでレコード作成 $_sql = ""; $_sql .= "INSERT INTO tenpo_mst ("; $_sql .= " tenpo_name,"; $_sql .= " tenpo_pass,"; $_sql .= " zei_kbn,"; $_sql .= " zeiritsu,"; $_sql .= " zei_kirisute_kbn,"; $_sql .= " order_status"; $_sql .= " ) VALUES ("; $_sql .= " '',"; $_sql .= " '" . addslashes($_input_pass) . "',"; $_sql .= " 2,"; $_sql .= " 0,"; $_sql .= " 0,"; $_sql .= " 0"; $_sql .= " )"; _query( $_conn, $_sql ); } _freeResult( $_result ); } //入力画面表示の場合 if( $_err_str != "" ){ echo "<HTML>\n"; echo "<HEAD>\n"; echo "<TITLE>管理者認証</TITLE>\n"; echo "</HEAD>\n"; echo "<BODY>\n"; echo "<CENTER>\n"; echo "<FONT COLOR=RED SIZE=5>管理者認証</FONT>\n"; echo "<HR>\n"; echo "${_err_str}<BR><BR>\n"; echo "<FORM ACTION=\"mnt_menu.php\" METHOD=\"POST\">\n"; echo "<FONT COLOR=RED SIZE=2>※記号を除く半角小文字8文字以内</FONT><BR>\n"; echo "パスワード:<INPUT TYPE=\"password\" NAME=\"post_pass\" MAXLENGTH=8>\n"; echo "<INPUT TYPE=\"submit\" VALUE=\"送信\">\n"; echo "</FORM>\n"; echo "<HR>\n"; echo "</CENTER>\n"; echo "</BODY>\n"; echo "</HTML>\n"; _dbDisconnect($_conn); exit; } } ?> 以下省略しました。

    • ベストアンサー
    • PHP
  • PHPエラー Warning: mysql_

    OCNサーバープランをスタンダードからビジネスライトへ変更した際、 OCN側で移動してくれたのはいいのですが、入っていた掲示板システムで、「削除」画面で 削除を押すと前サーバーまでは問題がなかったのですが、今回は削除はされるけれどエラー文がでてきます。 Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /usr/home/△△/www/htdocs/info/●●.php on line 87 問題の87行目: echo "<br>1件削除しました"; <?php if ($_POST["go_1"]==1) { $db_date = htmlspecialchars($_POST['db_date']); $sql="DELETE FROM keiji_t where kdate='".$db_date."'"; mysql_query($sql,$conn) or die("削除できませんでした"); mysql_free_result($res); echo "<br>1件削除しました"; } ?> 「1件削除しました」という文字はでます。 何が原因かわからず、もし原因として考えられそうなこと教えていただければとこちらにいれさせていただきました。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでのMYSQL操作について教えてください。

    MYSQLの中のデータをPHPで一覧にして表示し、フォームの内容を変更してから変更ボタンを押すと変更を反映した内容が一覧になって表示されるようにしたいのですが、うまくいきません。 コードは以下のとおりです。 <?php //接続設定 $sv="localhost"; $dbname="****"; $user="****"; $pass="****"; //文字コード $enc_disp="shift-jis"; $enc_db="shift-jis"; //データの文字コードを変更する function cnv_enc($string, $to, $from) { //文字コード変換 $det_enc=mb_detect_encoding($string, $from . ", " . $to); if ($det_enc and $det_enc != $to) { return mb_convert_encoding($string, $to, $det_enc); } else{ return $string; } } //データをSQL用に変換 function cnv_sqlstr($string) { if (get_magic_quotes_gpc()) { $string = stripslashes($string); } $string = htmlspecialchars($string); $string = mysql_real_escape_string($string); return $string; } //データベース接続 $conn=mysql_connect($sv,$user,$pass) or die("接続エラー"); mysql_select_db($dbname) or die ("接続エラー"); //編集するデータを取得する if (count($_POST) >0) { $number=$_POST["number"]; $name=$_POST["name"]; //データが送信された時にはデータを変更する if (strlen($number) and strlen($name)) { //データを変更する $sql = "UPDATE customer SET number = ".cnv_sqlstr($number).", name = '".cnv_sqlstr(cnv_enc($name, $enc_db, $enc_disp))."', WHERE (number = ".cnv_sqlstr($number).");"; mysql_query($sql, $conn) or die("データ変更エラー"); } } //データを取り出す $sql = "SELECT number,name FROM テーブル名 ORDER BY number ;"; $res = mysql_query($sql, $conn) or die ("データ抽出エラー"); //取りだしたデータを表示する echo "<table border =\"1\">"; echo "<tr>"; echo "<td> </td>"; echo "<td>名前</td>"; echo "</tr>"; while ($row =mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<form method=\"POST\" action=\"".$SERVER["PHP_SELF"]."\">"; echo "<tr>"; echo "<td><input type=\"submit\" value=\"変更\"></td>"; echo "<input type=\"hidden\" value=\"".$row["number"]."\" name=\"number\">"; echo "<td><input type=\"text\" name=\"name\" value=\"".cnv_enc($row["name"], $enc_disp, $enc_db) . "\"></td>"; echo"</tr>"; echo"</form>"; } echo"</table>"; //接続を解除する mysql_close($conn); ?> 現在は内容を変更して変更ボタンを押すと、「変更エラー」が表示される状態です。 何が原因かわからず行き詰っています。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHP実行時の警告について

    こんばんわよろしくお願いします。 aaacafeのレンタルサーバーでPHPのバージョンは4.2.3です。 Mysqlに接続して結果を一行づつ表示したいのですが 実行時に下記の2行警告が出てヘッダ部分しか表示しません。 自分で調べてぼんやりとは原因はわかったのですが、 具体的にどう直してよいかわかりません。 ご教示お願いします。 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource 以下ソースです。 <?PHP $sql = ""; $sql .= "select * from LIVE"; $sql .= " ORDER BY DATE DESC"; ?> <HTML> <HEAD> <TITLE>接続テスト</TITLE> </HEAD> <BODY> <?php //SQL発行 $rs = mysql_query($sql, $conn); echo "<table cellSpacing=0 cellPadding=0>\n"; echo "<tr bgcolor=yellow>"; echo "<th >日付</th>"; echo "<th>ツアータイトル</th>"; echo "<th>会場</th>"; echo "<th>アーティスト</th>"; echo "</tr>\n"; ■この行→ while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC ) ){ echo "<tr>\n"; echo "<td>" . _hs($rec['DATE']) . "</td>\n"; echo "<td>" . _hs($rec['TITLE']) . "</td>\n"; echo "<td>" . _hs($rec['PLACE']) . "</td>\n"; echo "<td>" . _hs($rec['ARTIST']) . "</td>\n"; echo "</tr>\n"; } //結果セットの解放 ■この行→ mysql_free_result( $rs ); //切断 mysql_close($conn); echo "</table>"; ?> </BODY> </HTML>

    • ベストアンサー
    • PHP
  • PHP+MySQL

    PHP4で、MySQLに接続しています。 $connには、接続IDが格納されています。 以下のスクリプトで、「エラー」が出てしまうのですが、何故でしょうか? $sql = "SELECT (User_num, User_name, User_pass) FROM User WHERE User_name='$login_name'"; if (!$result= mysql_query($sql, $conn)){ die (print ("エラー")); } SQL文を、 SELECT (User_num) FROM User WHERE User_name='$login_name' と書き換えるとうまくいきます。複数にするとエラーというのはどうしてでしょう

    • ベストアンサー
    • MySQL
  • PHPでのMYSQL接続のデータ表示

    PHPのバージョンは4.2.3です。 index.php という一覧表示画面から 一意なKey文字列を受け取りそのデータに合致する データの詳細を表示する画面です。 実データ部分が表示されず困っています。 実行時のPHPのエラーも出力されないので いまいちどこが悪いのかわかりません アドバイスよろしくお願いします。 <?php require_once( "common.php" ); require_once( "const.php" ); if(! $conn = mysql_connect( 'ホスト名','ユーザー名','PASS')){ die( 'MYSQL接続失敗'); } $sql = ""; $sql .= "select * from LIVE "; $sql .= "ORDER BY Date DESC "; $sql .= "WHERE ID=".$_REQUEST[ "KEY" ]; echo $sql; mysql_select_db("DB名",$conn); $rs = mysql_query($sql, $conn); $DATE=$rs['DATE']; $TITLE=$rs['TITLE']; $PLACE=$rs['PLACE']; $ARTIST=$rs['ARTIST']; echo $DATE; echo $TITLE; echo $PLACE; echo $ARTIST; //$rec = mysql_fetch_array( $rs, MYSQL_ASSOC ); ?> <HTML> <HEAD><TITLE>ライブ予定</TITLE></HEAD> <BODY><H1 ALIGN="CENTER">ライブ予定詳細</H1> <A HREF="./">戻る</A> <TABLE BORDER="1" ALIGN="CENTER" WIDTH="100%"> <TR><TD BGCOLOR="#FFFFCC">日付</TD> <TD><?php HESC($rec['DATE']) ?></TD></TR> <TR><TD BGCOLOR="#FFFFCC">タイトル</TD> <TD><?php HESC($rec['TITLE']) ?></TD></TR> <TR><TD BGCOLOR="#FFFFCC">場所</TD> <TD><?php HESC($rec['PLACE']) ?></TD></TR> <TR><TD BGCOLOR="#FFFFCC">アーティスト</TD> <TD><?php HESC($rec['ARTIST']) ?></TD></TR> <TR><TD BGCOLOR="#FFFFCC">本文</TD> <TD></TD></TR> </TABLE> </BODY></HTML>

    • ベストアンサー
    • PHP

専門家に質問してみよう