我得到错误 - 警告:mysql_fetch_assoc()期望参数1是资源

时间:2013-02-18 09:15:45

标签: mysql compiler-errors

这是代码.........

<?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,我知道这是一个愚蠢的问题,但请帮助我。在此先感谢.. :))

3 个答案:

答案 0 :(得分:1)

你搞砸了$query$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 />";
 }
?>

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

您可以使用内联IF

直接更新
UPDATE tableName
SET    b_status = IF(a_status = 1, 1 , b_status )

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