2

編集:BaylorRaeとJvBergに感謝します-あなたの回答/コメントは問題の解決に役立ちました。私は引用符を削除しなければなりませんでした-私は気づいていませんでした。皆様のご協力に感謝いたします。


where ownerid='$friend_ids'を使用して、「アラート」テーブルからすべてのデータを選択しようとしています。IN私が抱えている問題は(多数のグーグルとコード変更にもかかわらず)、1行しか取得していないことです。

$fid=$ClassUsers->Friendids($user_id);
echo $fid;

これは(予想どおり)1,2,3を返します。

ただし、試してみると:

$sql="SELECT * FROM alerts WHERE ownerid IN('$fid')";
echo mysql_num_rows($db->query($sql));

「1」行のみを返します。

私のアラートテーブル:

アラートテーブル

誰かが理由を知っていますか?またはこれを解決する方法は?私は文字通り、昨日、前日、そして今日は数時間、グーグルでこれを照会するためのさまざまな方法を試し、一晩中過ごしました。ありがとう。

4

3 に答える 3

1

$fidの値によって異なります。

$fid = '1, 2, 3';
$sql="SELECT * FROM alerts WHERE ownerid IN( $fid )";
echo mysql_num_rows($db->query($sql));

3行すべてを返します。

于 2012-09-13T15:16:21.270 に答える
1

値を引用してみてください

IN ('1', '2', '3')

それ以外の場合は、「1」、「2」、「3」ではなく、文字通り「1、2、3」の値を探します。

于 2012-09-13T15:23:55.920 に答える
1

が配列の場合$fid、次のようなことを行う必要があります

$fid_sql = implode(','. $fid);
$sql="SELECT * FROM alerts WHERE ownerid IN( $fid_sql )";

DB内の整数フィールドである場合、ここで各値を一重引用符で囲む必要はないことに注意してください。

$fidが文字列="1、2、3"の場合、必要なのはクエリ内の単一引用符を$fid削除することだけです。

于 2012-09-13T15:27:40.790 に答える