- 締切済み
なぜ?更新されたのにデータが変わらないのは??
ajaxとphpとdbを使ってマウスで自由な場所に移動できるエディターを作ってます。 で、なぜか更新が失敗してしまい一つずつ切り分けて確認していったところ、DBの update文が実行するまでは正常に動いております。 変数の中身もechoで確認済みで更新したいデータはちゃんと入っております。 条件があっているので正常に動きましたとの結果も出ております。 ですが、更新させたいデータが変数に入っているにも関わらず肝心の更新したい場所が 更新されない事があります。 同じ手順でやっているため正常に動いてないことがあるのは確かです!! エディターなので更新機能をつけているのでそこからupdateさせればいいのですが、 あまりも頻度が多いのでこれはまずいと思って考えてはいますが、原因はどこだろうと 考えてばかりで答えが出せません。 googleの検証を使っているのですが、あれが正常に動いていない可能性はあるのでしょうか? 正常に動いているとしたらmysqlのupdate文に更新されない不具合があるということでしょうか? 更新されなかった場合の方法としては二重更新しか対応が思いつきませんが、適切な方法で 他のやり方はございますでしょうか。 大変お手数ですが、ご教示よろしくお願いします。
- sato965
- お礼率12% (13/105)
- MySQL
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- maiko0333
- ベストアンサー率19% (840/4403)
MySQL は、デフォルトで新しい接続のセッション開始時に自動コミットモードが有効になります。そのため、各 SQL ステートメントからエラーが返されなかった場合に、MySQL はそのステートメントのあとでコミットを実行します。ステートメントからエラーが返された場合、コミットまたはロールバックの動作はそのエラーによって異なります。セクション14.19.4「InnoDB のエラー処理」を参照してください。 自動コミットが無効になっているセッションが、最後のトランザクションを明示的にコミットせずに終了した場合、MySQL はそのトランザクションをロールバックします。 https://dev.mysql.com/doc/refman/5.6/ja/innodb-implicit-commit.html
- maiko0333
- ベストアンサー率19% (840/4403)
データベースはUPDATEで更新完了ではないのです。 UPDATEしたあと、COMMITの操作が必要です。 UPDATEやINSERT、DELETEは仮押さえなのです。 すべての更新が正常であればCOMMIT(本登録)、 どこかに異常があればROLLBACK(仮押さえをキャンセル)する事になります。 明示的にCOMMITしていない場合、プログラム終了でROLLBACKされることがあります。 (データベースの設定によりCOMMITの場合もあります)
関連するQ&A
- CGIによる、MySQLのデータの更新処理が出来きず困ってます。
最近、perlの勉強をはじめ、 勉強がてら、 ユーザ管理フォームを作りたく CGIのソースを書いています。 データはMySQLに登録しています。 以下のプログラムを使用し、 データの更新をしたい際に、 更新作業を行うと、 エラーなどは出ず、 ソースにあるように、 「データを正常に更新しました」と表示されますが、 更新されたか?をMySQLで確認すると、 データが更新されておらず、 更新作業を行う前と何ら変わらない値が登録されています。 「update文」のあたりがおかしいのかな?と 感じたのですが、 どこが検討はずれなのか?が分からず、 前に進めないでいます。 アドバイスいただけると大変ありがたいです。 宜しくお願い致します。 ソースは以下の通りです。 ========================================= use CGI; use DBI; $form = CGI->new; print "Content-type: text/html\n\n"; print "<html><body>\n"; # DBに接続 $db=DBI->connect("DBI:mysql:dbname","username","pwd", {RaiseError => 0, PrintError => 1}); if(!$db){ print "失敗\n"; exit; } # UPDATE文作成 $sql = "update test20090702 set agent='$agent',attend='$attend',name='$name',sex='$sex',remarks='$remarks' where name='$name'"; # SQL実行 $sth = $db->prepare($sql); if(!$sth->execute){ print "SQL-fail\n"; exit; } # ステートクリア $sth->finish; # DB切断 $db->disconnect; print "データを正常に更新しました。\n"; print <<"HTML"; HTML ========================================= ■開発環境:Fedora9 ■MySQL:mysql-5.0.77-1
- ベストアンサー
- CGI
- Mysql UPDATE出来ません
PHP+MySQLでホームページ開発中ですが、MySQLで特定idのフィールドの更新処理(UPDATE)が出来ません。初心者です宜しくお願いします。 【Mysqlで確認した点】 (1)XAMPP・MyAdminからは以下のSQL文で問題なく更新できる。 "UPDATE upload_list SET rem='ABCDEF' WHERE id=15;" 【問題は?】 以下のphpからは更新できません。 【phpで確認した点は?】 (1)DBへ正常に接続してる。 (2)文字コードも正常にSETしてる。 (3)UPDATE実行後の$RESULT(返り値)がない。 (4)PHPを実行後、MyAdminでDBを確認しても更新されていない。 【phpコード】 <?php //データベースパラメータ定義 $DBSERVER="localhost"; $DBUSER="root"; $DBPASSWORD=""; $DBNAME="up_load"; $DATANAME="upload_list"; //Mysqlに接続 if(mysql_connect($DBSERVER,$DBUSER,$DBPASSWORD)) {echo "DB接続済/";} else {echo "<h2>データベースに接続できません</h2>";die();} //Mysql停止 //データベースを選定 mysql_select_db($DBNAME); //Mysqlの文字セットを定義 $sql = "SET NAMES ujis;"; $result = mysql_query($sql); if ($result==true){echo "文字コードSET済/";} //更新id、rem(更新記事)をSET $id=15; $new_rem="ABCDEF"; echo $DATANAME."/".$id."/".$new_rem."/"; //Mysql更新処理 $result=mysql_query('UPDATE $DATANAME SET rem=$new_rem WHERE id=$id;'); if ($result==true){echo "更新!";} else {echo "更新出来ず";} //XAMMP phpMyAdminからは以下のSQL文で更新できた。 //UPDATE upload_list SET rem='ABCDEF' WHERE id=15; ?> 【実行後のブラウザ表示】 DB接続済/文字コードSET済/upload_list/15/ABCDEF/更新出来ず
- ベストアンサー
- MySQL
- データの更新
失礼いたします。 JAVA初心者のjavateaです。 フォームからデータを入力してDBの更新を行いたいと思い、次のような計画を立てています。 1、フォームを作る 2、PHPでのMySQLへの接続法に倣い(PHPの参考書のみあるので)javaで接続。 3、フォームから値の受け渡しを作り、それに応じたSQL文を発行させる。 4、recurseし、自動的に更新する。 ここで、一番問題になるのは2番です。 タグ文章にjavaを埋め込む形でPHPと同じようにいくものなのでしょうか?javaでDBに接続を行いテーブルを表示することは出来ますので、データそのものを書き換える方法を教えていただければと思います。 よろしくお願いします。。('-'。)(。'-')。
- ベストアンサー
- Java
- 更新時の文字化けに関して
初歩的な質問で申し訳ありませんが、教えて下さい。 以下のようにSQL文を作成し、更新処理をしようとしたところ、 どうも文字化けして更新できませんでした。 そもそもの文字設定の基本を把握できていないのが問題ですが、、、 どこの何を設定すれば良いでしょうか? よろしくお願いします。 《DB内容 (MySQL)》 項目 name varchar(50) 照合順序 sjis_japanese_ci 《プログラム内容(phpで記述)》 //データベース接続 $con = mysql_connect("localhost", "root", "999999"); // php_dbデータベースへ接続する if (!$con) { die('接続できませんでした: ' . mysql_error()); } $str = 'あいうえお'; $sql = "UPDATE tbl_ABC set name = '$str'"; if (!mysql_select_db('db_abc', $con)) { echo 'Could not select database'; exit; } $result = mysql_query($sql,$con); mysql_query("set names sjis"); if (!$result) { echo "DB Error, could not query the database\n"; echo 'MySQL Error: ' . mysql_error(); exit; } mysql_close($con) ;
- ベストアンサー
- PHP
- 配列をループさせてUPDATE
投票システムでチェックボックスから選択されたキーをまとめてUPDATEするには、 どの様なUPDATE文にすれば良いのでしょうか? -------------------------------------------------------------- for ($i = 0; $i < count(@$_POST["answer"]); $i++) { echo $_POST["answer"][$i]."が選択されました"; // ← 一応PHP上で正常に値が返るかを確認しました。 $data = $_POST["answer"][$i]; // ←変数に置き換えました。 $conn = db_conn(); $sql = "UPDATE an SET "; $sql .= " sel" . $data . "cnt = sel" . $data . "cnt + 1"; $sql .= " WHERE id = '" . cnv_sqlstr($id) . "'" ; } -------------------------------------------------------------- という様に書くと、最後にチェックしたキーのみがUPDATEされ、 その他のキーは無視されてしまいます。 echo文でPHP上で正常に走っているかどうかを確認したところ 問題はありませんでしたが、UPDATE文でデータベースに投げると 上手くいきません。 どうかご教示の程よろしくお願い申し上げます。
- ベストアンサー
- PHP
- mysql データ更新
一覧画面に更新ボタンを作成しました 更新ボタンを押すとkoushin_input.phpにデータを渡し入力フォームを表示され番号、氏名、住所が選択されたデータが表示されるようにしたいのでが更新ボタンを押しても下記のように出ます string(64) "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`=0" bool(false) データが削除されています ソースコードはtop.php 一覧画面です <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>一覧画面</title> </head> <body> <BLOCKQUOTE> <BR>一覧画面<BR><BR> <?php $con=mysqli_connect("localhost","root","admin","db_test"); if(isset($_GET["del"]) and isset($_GET["id"]) and $_GET["del"]==1){ $id=(int) $_GET["id"]; $result = mysqli_query($con,"DELETE FROM tbl_test where `番号`={$id}"); } // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,"SELECT * FROM tbl_test"); echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr>"; while($row = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['番号'] . "</td>"; echo "<td>" . $row['氏名'] . "</td>"; echo "<td>" . $row['住所'] . "</td>"; echo "<form action=koushin_input.php method=get>"; echo "<td><input type=submit value=更新></td>"; echo "</form>"; echo "<td><a href=\"".$_SERVER["SCRIPT_NAME"]."?del=1&id=".$row['番号']."\">削除</a></td>"; echo "</tr>"; } echo "</table>"; mysqli_close($con); ?> <BR><BR><BR> <A HREF="http://localhost/regist.php"> <INPUT TYPE = "SUBMIT" VALUE = "新規登録"></A> </BLOCKQUOTE> </body> </html> 受け取る側 koushin_input.phpです <html> <body> <?php // データベースに接続 if(!$con=mysql_connect("localhost","root","admin")){ echo"接続エラー"; exit; } // データベースを選択 if(!mysql_select_db("db_test",$con)){ echo"データベース選択エラー"; exit; } // SELECT文を実行 $id=(isset($_GET["id"]))?((int) $_GET["id"]):0; $sql = "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`={$id}"; var_dump($sql); if(!$res=mysql_query($sql)){ echo "SQL実行時エラー"; exit; } // データの存在チェック if(!$row=mysql_fetch_array($res)){ $row=mysql_fetch_array($res); var_dump($row); echo "データが削除されています"; exit; } // 入力画面の出力 echo "<form action=koushin.php method=post>"; echo "名前:<input type=text name=NAME value=\"" . $row['氏名'] . "\"> "; echo "住所:<input type=text name=ADDR value=" . $row['住所'] . "> "; echo "<input type=submit value=更新>"; echo "</form>"; // 結果セットの解放 mysql_free_result($res); // データベースから切断 mysql_close($con); ?> </body> </html> どこが原因なんでしょうか?
- ベストアンサー
- MySQL
- データベースの更新
複数のリスト間をドラッグ&ドロップで要素の入れ替えを行った直後に、データベースのフィールドの値(AID)を変更したいと考えています。 以下が今打ってるプログラムですが、実行すると「オブジェクトでサポートされてないプロパティまたはメソッドです」と出てしまいます。 PHP初心者でなかなか上手くいかずに悩んでいます。 ご意見よろしくお願いします。 【PHP文】 <?php session_start(); $db=mysql_connect("localhost","root","") or die ("接続できません"); mysql_select_db("ajax") or die ("database接続失敗"); mysql_query("SET NAMES utf8") or die ("クエリ発行できません"); $dd=mysql_select_db('ajax',$db); function s_1() { $query = "update A set AID = 1"; $result = mysql_query($query,$dd); } function s_2() { $query = "update A set AID = 3"; $result = mysql_query($query,$dd); } ?> 【ドラッグ&ドロップ制御文】 <script type="text/javascript" language="javascript"> Sortable.create('dd_1',{containment:['dd_2'],dropOnEmpty:true,constraint:false ,onUpdate:function(){s_1()}}); Sortable.create('dd_2',{containment:['dd_1'],dropOnEmpty:true,constraint:false ,onUpdate:function(){s_2()}}); </script>
- 締切済み
- PHP
- Accessにてデータの更新
Accessにて、フォームにボタンを作成し、クリックすると フォームのテキストボックスのデータを取得し、 テーブルのデータを更新するVBAを作りたいのですが、 mySQL = "UPDATE テーブル名 SET フィールド名 = '1234'" このようにすると、フィールドが1234のデータに更新されるのですが、 これを namae =Me!テキストボックス名 mySQL = "UPDATE テーブル名 SET フィールド名 = namae" とするとうまくいきません。 正しい書き方をお願いします。
- ベストアンサー
- オフィス系ソフト
- PHP+MySQLで、MySQLデータをブラウザで表示→ブラウザからデ
PHP+MySQLで、MySQLデータをブラウザで表示→ブラウザからデータをアップデート→ブラウザを更新して再表示したいのですが、データをアップデートしたあと、ブラウザで表示してもすぐに反映されません。 「あれ?」と思ってmysqladminでDBを見ると、アップデートはされています。そしてしばらくして再度ブラウザを更新すると、アップデートが反映された状態で表示されます。 すぐにアップデートを反映させたいのですが、どうすればよいでしょうか。 phpで、update処理の後、 mysql_close($conn); と書いていますが、これだけではいけないのでしょうか。 よろしくお願い致します。
- ベストアンサー
- MySQL
- Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイト
Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイトでDBのデータが変わるとWEBサイトの表示も変わるようにするにはどうすればいいのでしょうか。
- ベストアンサー
- AJAX
補足
myspl、postgreSQLは自動コミットだったと思うのですが、Oracleと同様でコミットしないといけないのでしょうか? もし、そうならなぜコミットせずデータが入るときがあるのでしょうか? 知識不足で大変申し訳ありません!! ご教授よろしくお願いします。