0

我有一个 MySQL 语法,我在其中为用户返回一些数据。执行以下查询有没有更好的方法,我只想知道user Xin是否有数据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()来知道要打印出什么以及要删除什么。

注意:我没有尝试过代码,但我想它可以工作

4

2 回答 2

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 中的语法错误或服务器本身存在问题总是有用的(请参阅我的代码)

于 2012-05-21T08:31:09.993 回答
1

mysql_fetch_assoc()FALSE当没有要获取的行时返回。您可以像这样检查返回值:

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

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

于 2012-05-21T08:34:01.223 回答