0

ログインしているユーザーにローカルに住んでいるユーザーのリストを表示しようとしています。そのため、ログインしているセッション ユーザーの郵便番号が「m3 4」で、他の 5 人のユーザーの郵便番号が「m3 4」で始まる場合、これらのユーザーはユーザーに表示されます。

私のテーブルは次のようにレイアウトされています:

id  |   user_id  | user_postcode
1          2          M3 4
2          3          SM2 7
3          4          M3 4

したがって、このシナリオでは、郵便番号が一致するため、ログインしているユーザー 4 にユーザー 2 が表示されます。

私はmysqlでこれをやろうとしていますが、郵便番号を次のように手動で入力すると機能します:

AND ptb_stats.user_postcode='M3 4'

しかし、私はそれをユーザーセッション固有にしようとしているので、ログインしているユーザー / $_SESSION[user_id'] が他のユーザーと同じ郵便番号を持っている場合。

私はこのようにしようとしていますが、郵便番号なしですべてのユーザーを表示しています。

function get_local_users() {
            global $connection;
            global $_SESSION;
            $query = "
            SELECT *
            From ptb_stats, ptb_users
            WHERE ptb_stats.user_id=ptb_users.id
            AND ptb_stats.user_postcode='".$_SESSION['user_postcode']."'";
            $local_set = mysql_query($query, $connection);
            confirm_query($local_set);
            return $local_set;
        }

".$_SESSION['user_postcode'] が設定されておらず、".$_SESSION['user_postcode'] を変数などとして設定していないため、これを行っていると思います。その方法がわからないためです。しかし、「.$_SESSION['user_id'] は変数として設定されています。これは、これを行う方法を教えてくれなかった私の友人によって行われたためです。そのため、これをどのように解決できるか、また解決できるかどうかはわかりません。どういうわけかユーザー ".$_SESSION['user_id'].

$_SESSION['columnHere'] に列名を単純に追加することはできませんか?

私はこれに1日以上取り組んでいますが、理解できません。私はphpとmysqlに本当に慣れていないので、これはばかげた質問に思えるかもしれませんが、私はすべてを試しているので、誰かが私に見せてくれますか?並べ替えて、どこにも行きません。

4

1 に答える 1

0

PHP と SQL は異なる言語です。PHP を使用して SQL コードを生成していますが、それだけです。ですから、結局のところ、重要なのは何$queryが含まれているかです。その値を調べるだけです...

var_dump($query);

...お気に入りの MySQL クライアントを使用して、生成された SQL コードを実行します。それはエラーがどこにあるかを教えてくれます。

コードで確認できるという事実はglobal $_SESSION;、セッションでの最初の試みであることを示唆しています。ほとんどの場合、セッションは機能していません (忘れている可能性があります) ため、session_start()次の$_SESSION['user_postcode']通知がトリガーされます。

Notice: Undefined variable: _SESSION

このような通知を表示するには、PHP で完全なエラー レポートを構成する必要があります。ここに簡単な説明があります。

さらに、PHP で SQL インジェクションを防止する方法をお勧めします。.

于 2013-03-11T16:44:58.263 に答える