根据此查询是否成功执行下一个查询


Execute the next query based on whether or not this query succedded?

我正在制作一个简单的web应用程序。在其中的一部分中,我希望执行一个SQL查询,这是一个选择查询。现在,查询失败的可能性很大,因为没有行能够满足给定的条件。

根据查询是否失败,我希望执行另一个查询。

无论我做什么,我都发现第一个查询正在执行,怎么了?

以下是代码片段:

$select_query = "SELECT COUNT(*) from entryDetails WHERE user_id='$user_id' and list='$entry->list' and pos='$entry->pos' and monthyearkey='$entry->monthyearkey' and day='$entry->day'";
        if(!mysql_query($select_query))
            $addday_query="INSERT INTO entryDates (user_id, list, pos, monthyearkey, day) VALUES ('$user_id','$entry->list','$entry->pos','$entry->monthyearkey','$entry->day')";
        else
            $addday_query = "UPDATE entryDates SET active=IF(active=1, 0, 1) WHERE user_id='$user_id' and list='$entry->list' and monthyearkey='$entry->monthyearkey' and day='$entry->day'";
        mysql_query($addday_query);

"IF"条件总是评估为true,有什么问题?我该怎么办?解决这个问题的正确方法是什么?

<?php 
    $select_query = "SELECT COUNT(*) from entryDetails WHERE user_id='$user_id' and list='$entry->list' and pos='$entry->pos' and monthyearkey='$entry->monthyearkey' and day='$entry->day'";
    if($result = mysql_query($select_query)){
        if($num_rows = mysql_num_rows($result)){
            $addday_query = "UPDATE entryDates SET active=IF(active=1, 0, 1) WHERE user_id='$user_id' and list='$entry->list' and monthyearkey='$entry->monthyearkey' and day='$entry->day'";
        } else {
            $addday_query="INSERT INTO entryDates (user_id, list, pos, monthyearkey, day) VALUES ('$user_id','$entry->list','$entry->pos','$entry->monthyearkey','$entry->day')";
        }
        mysql_query($addday_query);
    }
?>

第一个查询始终是执行的查询,因为选择实际上不会失败。它只是返回值0。

您需要获取第一行并读取值,以确定找到的行数:

$result = mysql_query($select_query);
$row = mysql_fetch_row($result);
if($row[0] > 0) { /* At least 1 row found, execute UPDATE */ }
else { /* No rows found, execute INSERT */ }