根据条件检查表中是否有数据的语法

时间:2012-05-21 08:26:56

标签: php mysql

我有一个MySQL语法,我为用户返回一些数据。有没有更好的方法来执行以下查询,我只想知道user X中是否有category y的数据。

$search_sql = " SELECT id FROM sn_news WHERE id_category = $category AND id_client = $client ";
$search_query = mysql_query($search_sql);    
$search_query_result = mysql_fetch_assoc($search_query);

if($search_query_result)
{
    $search_result = TRUE;
}
else
{
    $search_result = FALSE;
}

如果我的查询有数据,我会得到TRUE的内容,如果没有FALSE,我可以稍后在$.post()中使用该结果知道要打印的内容以及要删除的内容。

注意:我没有尝试过代码,但我猜它有效

2 个答案:

答案 0 :(得分:3)

$search_sql = " SELECT id FROM sn_news WHERE id_category = $category AND id_client = $client ";
if ($search_query = mysql_query($search_sql))
{
    $search_result=(mysql_num_rows($search_query) ? TRUE : FALSE);
}

或实际检索数据

$search_sql = " SELECT id FROM sn_news WHERE id_category = $category AND id_client = $client ";
$search_query_result=array(); // initialise empty return array
if ($search_query = mysql_query($search_sql))
{
    switch mysql_num_rows($search_query)
    {
        case 0:
            $search_result=FALSE;
            break;
        default: // got something
            $search_result=TRUE;
            while ($row=mysql_fetch_assoc($search_query)
            {
                $search_query_result[]=$row;
            }
            break;
    }
}

这将检查返回的行数,并使用有用的小副作用相应地设置变量,整数值0等于FALSE。

我还会添加一些检查以查看查询是否有效。检查SQL中是否存在语法错误或服务器本身存在问题(请参阅我的代码)

答案 1 :(得分:1)

当没有要提取的行时,

mysql_fetch_assoc()会返回FALSE。您可以像这样检查返回值:

$search_result = mysql_fetch_assoc($search_query) !== FALSE;

告诉你什么,这与您在原始代码中所做的基本相同。