检查表行中是否存在记录

时间:2013-12-20 12:18:48

标签: php mysql sql

我正在尝试测试特定条件的记录是否存在。

$con = new mysqli('127.0.0.1', 'root', '', 'mysql');            

        if ($con->query("select count(*) from userpost  where userid = 1000004") != null) 
        {
            echo "exist";
        }
        else        
        { 
            echo "not exist";
        }

这是正确的方法吗?

或者让我知道是否有更好的事情

3 个答案:

答案 0 :(得分:2)

试试这个

if ($con->query("select user_id from userpost  where userid = 1000004 LIMIT 1 ") != null) 
        {
            echo "exist";
        }
        else        
        { 
            echo "not exist";
        }

答案 1 :(得分:1)

我认为这是假设userid是主键的最佳方式。你不能比where子句中的主键获得更好的性能(假设不存在连接,联合等)。

答案 2 :(得分:0)

$ con>查询永远不会等于 null 。如php手册中所述。 link

  

失败时返回FALSE。用于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询   mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询   mysqli_query()将返回TRUE。

使用fetch_row从查询结果中获取行。 link

$con = new mysqli('127.0.0.1', 'root', '', 'mysql');            

$result = $con->query("select exists( select * from userpost where userid = 1000004 )");

if ( $result !== FALSE )
{
    $row = $result->fetch_row();
    if( $row[0] != 0 )
    {
        echo 'exists';
    }
    else
    {
        echo 'not exist';
    }
}
else
{
    echo 'error';
}

$result->close();