2012-05-13 14 views
0

PHPデータベースの問題で私を助けてくれることを願っています。ここ

------は、PHPファイルマイナスデータベース情報-------------

// Connect to server and select database 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select database"); 

// read data 
    $query="SELECT * FROM $tbl_name ORDER BY ID ASC"; 
    $result=mysql_query($query); 

// Start loop 
$i=0; 
$num=10; 
while ($i < $num) { 
$ID=mysql_result($result,$i,"ID"); 
$notes=mysql_result($result,$i,"notes"); 
$InStitches=mysql_result($result,$i,"InStitches"); 
$notes=mysql_result($result,$i,"notes"); 

echo"i=$i, ID=$ID | InStitches=$InStitches | notes=$notes"; 

if($notes=="In Stitches game"){ 
    // update data in mysql database 
    echo "<font color=\"#0000FF\"> || $ID yes ||</font>"; 
    $sql="UPDATE $tbl_name SET InStitches='yes' WHERE ID='$ID'"; 
    $ID2=mysql_result($result,$i,"ID"); 
    $InStitches2=mysql_result($result,$i,"InStitches"); 
    echo " || $ID2 $InStitches2 ||"; 
} 

echo" - done<br/>"; 

// Increase value of i and continue loop 
$i++; 
} 

----ここにあるトラブルシューティングの結果が表示されます私のモニタ上---

i=0, ID=1 | InStitches=yes4 | notes=this is a note - done 
i=1, ID=2 | InStitches=yes4 | notes= - done 
i=2, ID=11 | InStitches= | notes= - done 
i=3, ID=12 | InStitches= | notes=tester, In Stitches game - done 
i=4, ID=14 | InStitches=22 | notes=In Stitches game || 14 yes || || 14 22 || - done 
i=5, ID=15 | InStitches= | notes= - done 
i=6, ID=16 | InStitches= | notes= - done 
i=7, ID=17 | InStitches= | notes= - done 
i=8, ID=18 | InStitches= | notes=blog tour winner, tester - done 
i=9, ID=19 | InStitches= | notes=tester - done 

I = 4(ID = 14)

について "InStitches" フィールドが "22" であり、データベース内の "YES" に変更します。しかしそれは変わらない。それは22のままです。

私は他のPHPファイルで$ sqlステートメントを使用しています。うまく動作します。このスクリプトの唯一の違いは、whileループで$ sql文があることです。だから、whileループで$ sql文があったので、インターネットを検索して検索しました。私はそれが問題だった場所を見つけることができませんでした。私はこのスクリプトを、現在8時間以上、私の知恵の終わりで働いています。

なぜデータベースに書き込まれないのでしょうか?

+0

でなければなりません。それはちょうどセット操作かもしれません。この場合、クエリを実行する代わりに、更新を直接行うことができます。UPDATE

SET InStitches = 'yes' WHERE $ notes = 'In Stitches game' rdbmsに応じて、RETURNING句を使用して、対象の更新された列のフィールドを戻すか、2番目の問合せを実行して結果を取得します。より良い1つの更新、多くのループ内。 – Glenn

+0

古いmysql_ *関数を使って新しいコードを書くのを止めてください。それらはもはや維持されず、コミュニティは[非推奨プロセス](http://goo.gl/KJveJ)を開始しました。代わりに、[準備完了声明](http://goo.gl/vn8zQ)について学び、[PDO](http://php.net/pdo)または[MySQLi](http://php.net/)を使用する必要があります。 mysqli)。あなたが決定できない場合、[この記事](http://goo.gl/3gqF9)が選択に役立ちます。あなたが覚えていれば、[こちらはPDO関連の良いチュートリアルです](http://goo.gl/vFWnC)。 – vascowhite

答えて

1

更新文は実行されていません。あなたは、DB上のアクションを実行するループを入力した場合、あなたが本当にそのループを必要とする場合

$sql="UPDATE $tbl_name SET InStitches='yes' WHERE ID='$ID'"; 
$ID2=mysql_result($result,$i,"ID"); 

は、ダブルチェック

$sql="UPDATE $tbl_name SET InStitches='yes' WHERE ID='$ID'"; 
$result=mysql_query($sql); 
+0

感謝します!うわー、5分足らずで答え。それは今完璧に動作します。私はあなたの助けにどれくらい感謝しているのかは分かりません! – Cindy

関連する問題