簡體   English   中英

如何使用涉及三個條件的where子句查詢MySQL表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM