如何使用涉及三个条件的where子句查询MySQL表

时间:2016-03-14 08:37:32

标签: php mysql

我有一个包含多列的表格。我想计算符合三个条件的成员的帖子数量。

来自包含文件夹:

function active_posts_number($data){
    global $db;
    $query = 'SELECT post_id FROM post WHERE (post_block = 0 AND user_id = ' . $data . ') AND post_activation = 1';
    $result = mysql_query($query, $db) or die(mysql_error($db));
    if(mysql_num_rows($result) > 0)
    {
        $number_of_posts = mysql_num_rows($result);
    }
    if(mysql_num_rows($result) < 1){
        $number_of_posts = 0;
    }
    //$number_of_posts = mysql_num_rows($result);
    return $number_of_posts;
}

页:

 $active_posts = active_posts_number($_SESSION["user_id"]);

响应: 检查要在'WHERE(post_block = 0'

)附近使用的mysql服务器版本

我已经在很多方面改变了这个功能,但仍然没有得到预期的结果(3)。 我知道这不是COUNT的合适方式,但这就是我能想出来得到我想要的东西。

'会感激任何建议。

5 个答案:

答案 0 :(得分:0)

使用括号没有问题。您可以使用或不使用它们。在您的查询中,问题是单引号。它破坏了你的疑问。如果您使用单引号启动查询,请使用双引号。

$query = 'SELECT post_id FROM post WHERE (post_block = 0 AND user_id = " . $data . ") AND post_activation = 1';

它不会导致错误。如果您遇到此类型错误,请始终回显您的查询并在phpmyadmin上运行。

答案 1 :(得分:0)

我不确定这是不是问题,但我认为你需要引用数据: 现在您的查询可能看起来像

SELECT post_id FROM post WHERE (post_block = 0 AND user_id = scott) AND post_activation = 1

答案 2 :(得分:0)

我尝试了你的代码,它为我工作。但是你也应该检查你的数据库连接和会话。

<?php
$username = "root";
$password = "12345689";
$hostname = "localhost";
$db_name = 'test_db';

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL"); //mysql connection
$db = mysql_select_db($db_name,$dbhandle) or die("Could not select test_db"); //selecting db

function active_posts_number($data){
    global $dbhandle; //mysql connection
    $query = "SELECT count(post_id) AS number_of_posts FROM post WHERE (post_block = 0 AND user_id = '$data') AND post_activation = 1";
    $result = mysql_query($query, $dbhandle);
    $str = mysql_fetch_object($result);
    $number_of_posts = $str->number_of_posts;
    return $number_of_posts;
}

// you should check the user_id of session.
$user_id        = 20; //$_SESSION["user_id"];
$active_posts   = active_posts_number($user_id);

print_r($active_posts);
?>

答案 3 :(得分:0)

如果您根据条件计算post_id的总数

,请使用这样的方法
SELECT count(post_id) as cnt FROM post WHERE post_block = 0 AND user_id = ' . $data . ' AND post_activation = 1;

,结果将是

total = $row1->cnt;

答案 4 :(得分:0)

试试这个

$query = 'SELECT post_id FROM `post` WHERE post_block = 0 AND user_id = '$data' AND post_activation = 1';