2012-05-13 40 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

如果你进入一个循环,如果你真的很需要那环能进行一个分贝,仔细检查行动。它可能只是一个集合操作。在这种情况下,而不是查询,然后更新,似乎你应该可以直接进行更新:更新

SET InStitches ='是'WHERE $ notes ='在缝合游戏中。根据rdbms,使用RETURNING子句返回您感兴趣的更新列的字段,或者执行第二个查询以获取结果。更好的一个更新,然后循环中的许多。 – 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

您没有执行更新语句!

$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

谢谢!哇,在不到五分钟的时间内回答。它现在工作完美。我无法说我多么感谢你的帮助! – Cindy