[英]How do i query MySQL table with a where clause involving three conditions
我有一個包含多列的表。 我想計算符合三個條件的成員的帖子數量。
來自包含文件夾:
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"]);
響應:檢查mysql服務器版本在'WHERE(post_block = 0')附近使用
我已經在很多方面改變了這個功能,但仍然沒有得到預期的結果(3)。 我知道這不是COUNT的合適方式,但這就是我能想出來得到我想要的東西。
'會欣賞任何建議。
使用括號沒有問題。 您可以使用或不使用它們。在您的查詢中,問題是單引號。 它破壞了你的疑問。 如果您使用單引號啟動查詢,請使用雙引號。
$query = 'SELECT post_id FROM post WHERE (post_block = 0 AND user_id = " . $data . ") AND post_activation = 1';
它不會導致錯誤。 如果您遇到此類型錯誤,請始終回顯您的查詢並在phpmyadmin上運行。
我不確定這是不是問題,但我認為你需要引用數據:現在你的查詢可能看起來像
SELECT post_id FROM post WHERE (post_block = 0 AND user_id = scott) AND post_activation = 1
我嘗試了你的代碼,它為我工作。 但是你也應該檢查你的數據庫連接和會話。
<?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);
?>
如果根據您的條件計算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;
試試這個
$query = 'SELECT post_id FROM `post` WHERE post_block = 0 AND user_id = '$data' AND post_activation = 1';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.