我有一个包含多列的表格。我想计算符合三个条件的成员的帖子数量。
来自包含文件夹:
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的合适方式,但这就是我能想出来得到我想要的东西。
'会感激任何建议。
答案 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';