0

テーブルで完全なクエリを実行できるデータベースがあります。各ユーザーにはメンバーシップ ステータスがありますが、これらのステータスのすべてが実際のメンバー ステータスであるとは限りません。このクエリでは、実際のメンバーシップ ステータスを持つすべてのユーザーを取得する必要があります。「PRマネージャー」など、ユーザーのジョブ割り当てをフィルタリングするフィルターもあります。まず、フィルターがあるかどうかを確認します。

if($filter != 0)
{
    $filter = "Assignment NOT LIKE '$filter'";
}
else
{
    $filter = "1";
}

次に、すべての実際のメンバーシップ値を検索します。

$member_ids = "";
while($get = mysql_fetch_array($query))
{
    if($get["IsMember"] == 1)
    {
        $id = $get["ID"];
        if($member_ids == ""){ $member_ids = "'$id'"; } else { $member_ids .= " OR '$id'"; }
    }
}

これら 2 つの生成されたパラメーターから、SQL クエリを作成します。

$query = mysql_query("SELECT * FROM vilma_contact WHERE Membership LIKE $member_ids AND $filter");

出力は次のようになります。

SELECT * FROM vilma_contact WHERE Membership LIKE '3' OR '2' AND Assignment NOT LIKE '10'

さて、問題です。PHP では実行されませんが、phpmyadmin にコピーすると、エラーは表示されず、正しい行が表示されます。私はそのようなことに遭遇したことはありません。誰かが助けてくれれば本当に感謝しています.

4

3 に答える 3

1
SELECT * 
FROM vilma_contact 
WHERE 
    Membership LIKE '3' OR '2' 
    AND Assignment NOT LIKE '10'

悪いSQLのように見えますが、おそらくそうあるべきです

SELECT * 
FROM vilma_contact 
WHERE 
    (Membership LIKE '3' OR Membership LIKE '2') AND
    Assignment NOT LIKE '10'

おそらく = を使用する必要があるため、さらに変更する必要があります

SELECT * 
FROM vilma_contact 
WHERE 
    (Membership = '3' OR Membership = '2') AND
    Assignment != '10';

また、「;」を追加してみてください 最後に

于 2012-09-19T19:34:05.007 に答える
0

コードのシーケンスが正しいかどうかわかりません

$query = mysql_query("SELECT * FROM vilma_contact WHERE Membership LIKE $member_ids AND $filter");

後です

while($get = mysql_fetch_array($query))

エラーは、しばらく前にクエリがないことを示しているようです。whileでは、 ?に渡されるクエリを表示していただけないでしょうか。

また、コメントで述べたように、クエリ部分を修正する必要がありますMembership LIKE '3' OR '2'

于 2012-09-19T19:43:46.390 に答える
0

あなたの WHERE 句は本当に間違った形式です。通常、LIKE1 つを使用する場合、文字列内にワイルドカード (%または_) の組み合わせを使用して、実際に何と照合するかを示します。これらの正確な文字列を一致させようとしている場合は、 equal を使用する必要があるため、次のようになります。

SELECT *
FROM vilma_contact
WHERE
(Membership = '3' OR Membership = '2') 
AND Assignment <> '10'

本当に部分文字列を一致させようとしている場合、クエリは次のようになります

SELECT *
FROM vilma_contact
WHERE
(Membership LIKE '%3%' OR Membership LIKE '%2%') 
AND Assignment NOT LIKE '%10%'
于 2012-09-19T19:37:02.957 に答える