2011-09-28 64 views
0

我正在使用此php代码更新表,但没有更新?在php for循环中这个mysql更新有问题吗?

if(isset($Submit)) 
{ 
    include('connect_mysql.php'); 
    for($i=0;$i<$count;$i++) 
    { 
     $sql = "UPDATE $table SET cost='{$cost[$i]}', net=('{$bypiece[$i]}' + '{$cost[$i]}') WHERE serial='{$serial[$i]}'"; 
     $result = mysql_query($dbcon, $sql); 
    } 
} 

if($result) 
{ 
    header("location:admin-index.php#office.php"); 
    mysql_close(); 
} 

它似乎应该工作,我没有理由为什么它不会。 我的变量被定义了,当我用else语句回应它们时,一切似乎都没有问题。然而数据没有被更新,并且标题不重定向。 任何人都可以帮我找到一个工作解决方案吗?

+3

你厌倦了回应$ sql,并测试它是否有效吗?怎么样mysql_error(),这是否给你任何东西? –

+1

你会得到哪个mysql错误描述? http://php.net/manual/en/function.mysql-error.php – hakre

+0

如果未设置“$ Submit”,则不会初始化'$ result'。然后你运行多个查询W/O甚至检查他们是否工作。例如。如果最后一次失败,你将不会被发现任何事情,并且不会有重定向。 – hakre

回答

1

调试时的一个好主意是打开错误报告。

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

也看到,如果你通过改变

$result=mysql_query($dbcon, $sql); 

$result=mysql_query($dbcon, $sql) or die(mysql_error()); 
+0

谢谢你,我从来没有想过把错误报告放在页面上。这导致我的错误。 –

0

变化在你的SQL语句中的任何错误:

net=('{$bypiece[$i]}' + '{$cost[$i]}') 

要:

net=({$bypiece[$i]} + {$cost[$i]}) 

您还应该对查询进行一些错误检查。

if(isset($Submit)){ 
include('connect_mysql.php'); 
$count=20; 
for($i=0;$i<$count;$i++){ 
    $sql="UPDATE $table SET cost='{$cost[$i]}', net=({$bypiece[$i]} + {$cost[$i]}) WHERE serial='{$serial[$i]}'"; 
    $result=mysql_query($dbcon, $sql) or die(mylsql_error()); 
} 
if($result){ 
    header("location:admin-index.php#office.php"); 
    mysql_close(); 
} 
} 
+0

谢谢,但这也没有工作。 –

0

什么是$计数设置为?由于$ count没有被设置为任何值,因此你的代码现在处于无状态。

+0

$ count = mysql_num_rows($ result2); –