1

这是代码......

<?php
include('../inc/php/inc/dbc.php');
$query = "SELECT * FROM available_fsv WHERE a_status = '1'";
$result_query = mysql_query($query);

while($row = mysql_fetch_assoc($result_query)){ 

        $billingid = $row['billingid'];

$query = "UPDATE available_fsv SET b_status = '1' WHERE billingid = '$billingid'";
$result_query = mysql_query($query);
echo $result_query; 
}
?>

我得到的错误............

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\php\fsv_shutdown_cron.php on line 6

数据库结构就像——

____________________________________________________
|   id   |   a_status | b_status    | billingid    |
|--------|------------|-------------|--------------|
|    1   |    1       |     0       |      1       |
|--------|------------|-------------|--------------|
|    2   |    0       |     0       |      12      |
|--------|------------|-------------|--------------|
|    3   |    0       |     0       |      9       |
|--------|------------|-------------|--------------|
|    4   |    1       |     0       |      3       |
|________|____________|_____________|______________|

我想做的是如果 a_status 为 1,则将 b_status 更新为 1。

我正在学习 php,我知道这是一个愚蠢的问题,但请帮助我。提前致谢.. :)

4

3 回答 3

1

你搞砸了$queryand $result_query,它们出现twice在代码中

错误就while($row = mysql_fetch_assoc($result_query)){ 行了..这里你$result_query只是你的update查询的响应..

试试这个 :

<?php
 include('../inc/php/inc/dbc.php');
 $query = "SELECT * FROM available_fsv WHERE a_status = '1'";
 $result_query = mysql_query($query);

 while($row = mysql_fetch_assoc($result_query)){ 
    $billingid = $row['billingid'];
    $update_query = "UPDATE available_fsv SET b_status = '1' WHERE billingid = '$billingid'";
    $update_result_query = mysql_query($update_query);
    echo $update_result_query; 
    echo "<br />";
 }
?>
于 2013-02-18T09:20:15.827 回答
0

此调用mysql_query($query)返回 FALSE,而不是结果集,这意味着您的查询中有错误。使用以下代码查看错误:

$result_query = mysql_query ($query);
if ($result_query === FALSE)
{
    echo (mysql_error ());
    die (1);
}

看来我错了。$result_query当您执行更新查询时,您确实会覆盖原始值。

于 2013-02-18T09:16:52.993 回答
0

您可以使用内联直接更新IF

UPDATE tableName
SET    b_status = IF(a_status = 1, 1 , b_status )

如果您正在执行此操作,则无需在数据库上进行两次通信。

于 2013-02-18T09:17:23.293 回答