PHP+MySQLでデータをアップデートしてもブラウザに反映されない問題の解決方法

このQ&Aのポイント
  • PHP+MySQLを使用してデータをアップデートした後、ブラウザで即座に変更が反映されない場合、どうすればよいでしょうか?
  • アップデートは正常に行われているが、表示に反映されるまでに時間がかかる問題が発生しています。
  • PHPのupdate処理の後にmysql_close($conn);を使用しているが、これだけでは解決しない可能性があるようです。
回答を見る
  • ベストアンサー

PHP+MySQLで、MySQLデータをブラウザで表示→ブラウザからデ

PHP+MySQLで、MySQLデータをブラウザで表示→ブラウザからデータをアップデート→ブラウザを更新して再表示したいのですが、データをアップデートしたあと、ブラウザで表示してもすぐに反映されません。 「あれ?」と思ってmysqladminでDBを見ると、アップデートはされています。そしてしばらくして再度ブラウザを更新すると、アップデートが反映された状態で表示されます。 すぐにアップデートを反映させたいのですが、どうすればよいでしょうか。 phpで、update処理の後、 mysql_close($conn); と書いていますが、これだけではいけないのでしょうか。 よろしくお願い致します。

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

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

  • ベストアンサー
回答No.1

こんばんは。 珍しい現象ですね・・・。 ブラウザのキャッシュの問題かと思います。 キャッシュをしないように、PHPでheaderを吐いたらどうですかね?

piyoko2010
質問者

お礼

こんにちは、ご回答ありがとうございます。 キャッシュ・・・こういうときはブラウザのキャッシュの問題ですね! しかも珍しい現象・・・と教えていただいた部分で、あ、私・・と思って 通常の静的ページで試してみたら、再現しませんでした。 wordpressのページに作っていた部分なのです。すみません。 それで、wordpressでだとどうしておかしいのかをもう一度考えたら、 WP super cacheというプラグインを入れていて、それをOFFにしたら すぐ反映されました。 自分だとこういうことにも気付かないので・・・ダメなんです。 ほんとにありがとうございました。

関連するQ&A

  • PHP/mySQLでインサートができません。

    PHPとmySQLを勉強中の初心者ですが、よろしくお願いします。 PHPで簡単なインサート文を作ってそれをmySQLに保存しようとしているのですが、以下のエラーが出てしまいます。 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource プログラムは以下の通りです。HOSTNAME,USERNAME,DBPWDは別のところで定義していますが、mysql_connect, mysql_select_dbではエラーにならないので、データベースの選択まではうまく行っていると思うのですが。 $conn = mysql_connect(HOSTNAME, USERNAME, DBPWD); if(!$conn){ die("Logon Failure to mysql Server."); } $db = mysql_select_db(DBNAME, $conn); if(!$db){ die("Cannot access to the DB"); } foreach($csv_ary as $a => $b) { $query = "INSERT INTO TEST field_a VALUES $a"; if (!mysql_query($query, $db)){ echo "更新失敗: SQL=$query<br>"; } } mysql_close($conn); field_aはvarchar(10)でPrimary_key, NOT NULLの設定です。 Foreachで展開した配列の値はちゃんと長さ10の文字列が入っています。 PHP 4.3.11は mySQL 4.0.27です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでMySQLのデータを検索したい

    お世話になります。 PHPでMySQLのデータを検索したいと思い、 以下のようにしてみたのですがうまく表示されません。 -- $name = $_POST["name"]; $link = mysql_connect('localhost', '', ''); $db_selected = mysql_select_db('', $link); mysql_set_charset('utf8'); $sql = "SELECT * FROM search WHERE". $name; $result = mysql_query($sql); while($row = mysql_fetch_array($name)) { print $row['name']; } $close_flag = mysql_close($link); -- どう改善すればいいのでしょうか? 初心者の為、少々お見苦しい点があるかと思いますが どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • 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でのINSERTの処理遅延

    PHP + MySQLのINSERTについて、不可解な現象が出ましたので、知っている方がいたら教えてください。 PHPでMySQLのデータ読み書きのプログラム(コマンドラインではなく、ブラウザで表示する)を書いたところ、PHPのプログラムの流れよりも、MySQLの書き込みが済んでしまっているような現象が発生しました。 プログラムソースの抜粋を以下に記述します。 ################# PHPのプログラム抜粋開始 ########## ~ DB接続処理 ~ //================================================== // STEP1:既に存在するデータを表示 //-------------------------------------------------- $sqltable = 'test'; $sqlcommand = "SELECT datadayo FROM $sqltable"; $sqlresult = mysql_query($sqlcommand, $sqllink) or die('ERROR'); while($tmpsqlread = mysql_fetch_array($sqlresult)) { echo "$tmpsqlread[datadayo]<br>"; } //================================================== // STEP2:データ追加 //-------------------------------------------------- $sqlcommand = "INSERT INTO $sqltable (autoid,datadayo) VALUES (NULL,'書き込んだデータ')"; $sqlresult = mysql_query($sqlcommand, $sqllink) or die('クエリの送信に失敗しました。'); ~ DBクローズ処理 ~ ################# PHPのプログラム抜粋終り ########## フローとしては、最初にSTEP1が処理されてSTEP2が処理されるはずです。 ■プログラム開始の時の条件 データベースをCREATEした直後にこのプログラムを流す。(つまり空の状態) ■予想した結果 1.STEP1において、まだデータベースは空の状態なので、echo文では何も表示されない。 2.STEP2において書き込まれる。 3.再度このプログラムを流す 4.STEP1において、上記2で書き込んだデータが表示される。 ■実際の結果 STEP1において、まだデータベースは空の状態のはずなのに、echo文で「書き込んだデータ」が表示される。 今まで、何度もこの手のプログラムを作成しましたが、このような現象は初体験です。 書き込みタイミングの遅延による現象ではなく、むしろ書き込みが早すぎる事による(PHPの処理が来る前にMySQLが処理されている)現象です。 PHPのバージョンは PHP 5.2.11 with Suhosin-Patch 0.9.7 (cli) MySQLのバージョンは Ver 14.14 Distrib 5.1.39 です。 どなたか、ご存知の方、ご教授いただけたら幸いです。

    • ベストアンサー
    • MySQL
  • PHPとMySQLで作ったプログラムについて

    PHP(Ver.5.2.5)とMySQL(Ver.5.0.45)で住所録プログラムを作りました。住所は登録できるのですが、PHPで住所録を表示すると新規登録分が表示されません。住所録登録プログラムではmysql_close文でDBをちゃんと終了しています。コマンドラインクライアントのselect*from文では新規登録分が1回でちゃんと表示されることと、住所録表示プログラムでブラウザーの更新ボタンをクリックすると新規登録分が表示されることから、住所録表示プログラムがおかしいのではないかと思い、いろいろ試したのですが、変わりません。住所録表示プログラムのスクリプトの一部を以下に示します。 <?php mysql_connect('localhost','root'); *rootパスワードは設定していません。 mysql_select_db('lesson'); $sql = 'select * from jushoroku'; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; }else{ while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["renban"]; echo ・・・ } } ?> 新規登録分を1回で表示するにはどこを直せば良いのでしょうか。どなたか教えてください。

    • ベストアンサー
    • PHP
  • 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
  • Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイト

    Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイトでDBのデータが変わるとWEBサイトの表示も変わるようにするにはどうすればいいのでしょうか。

    • ベストアンサー
    • AJAX
  • phpとmysqlでデータの一覧表示をしたいと思っています。

    phpとmysqlでデータの一覧表示をしたいと思っています。 ずらーっと並べるだけでなく、1ページに100件した場合には 10行毎に<hr>や<br>などのタグを挿入して間隔を空けたいのですが どのようにしたらいいのか悩んでいます。 現在は下記のようにLIMITで何度もqueryを発行しています。 できれば1回のqueryで処理したいのですが 他にどのような方法があるでしょうか。 $rs = mysql_query("select * from data order by id desc LIMIT 0,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } $rs = mysql_query("select * from data order by id desc LIMIT 10,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } $rs = mysql_query("select * from data order by id desc LIMIT 20,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • jqueryでロードしたPHPファイル更新後の表示について

    始めまして、jqueryを勉強してます。。 かなり初心者です。何度もすみません。 jqueryでロードしたPHPファイルにmysqlのデータを反映させてます。 環境:jquery1.4,php5.1,mysql,eclipse3.5,IE6です。 また記載したソースファイルは同じ階層にあります。 質問はjqueryでロードしたPHPファイル更新後の表示についてです。 IEのインターネットオプションで「ファイル削除」をしてIE更新後しか、 更新したmysqlデータや、phpファイルで更新した内容が、 HTMLファイル<div id="box">で表示されません。 更新しないと、以前のPHPファイルデータが表示されます。 (おそらく,更新後phpファイルのデータの再loadになると思います。。) 解決策ご存知の方しましたら、教えていただけないでしょうか? <!--home.html--> <html> <head> <script type="text/javascript" src="jquery1.4.js"></script> <script type="text/javascript" src="php.js"></script> <title></title></head> <body> <a href="javascript:php()">phpファイル</a> <div id="box">ここに表示</div> </html> //php.js function php(){$("#box").load("phpsql.php");} //phpsql.php. //このファイル内の$testo=1;を$testo=2;に変更しても、「ファイル削除して」更新を //しないと、$testo=1でhtml上で表示されます。 <?php $conn =mysql_connect("","ユーザー","パスワード"); mysql_query("SET NAMES 'sjis' ", $conn); mysql_select_db("データベース",$conn); $sql ="select * from テーブル名"; $rs=mysql_query($sql,$conn); $testo=1; echo '<table>'; echo '<tr><th>NO</tr><th>氏名</th></tr>'; while($row=mysql_fetch_assoc($rs)) { echo '<tr>'; echo '<td>'.$id.'</td><td>'.$name.'</td>'; echo $testo; } ?> 以上がソースです、phpファイルの更新状況を最新の状態でjqueryのloadする方法あれば、教えていただけないでしょうか? すみません。。(SQLは無関係ですね。。)

  • PHP+MySQL on さくらサーバー

    さくらサーバーで、プレミアムプランで契約しています。 PHP4.3.10、MySQL 4.0.26で、以下のPHPファイルを埋め込んだphpファイルを実行すると、エラーが生じます。なんか、初歩的なことを勘違いしているのではないかと言う気がするのですが、何が問題なのでしょうか。 データベースのユーザー名は、xxx パスワードは、yyy データベース名は、xxx(一つのみ割り当て) Userというテーブルがあります。 <?php $conn = mysql_connect("mysql11.db.sakura.ne.jp","xxx","yyy"); mysql_select_db("xxx", $conn); $sql = 'SELECT * from User'; mysql_query($sql, $conn)); ?>

    • ベストアンサー
    • MySQL