0

さて、これは完全な混乱であり、私は今とても迷っています。単語を検索できるサイトを検索しようとしていますが、designs複数の列から単語を検索するために呼び出されたテーブルを通過します。username別のメンバーも検索するオプションが必要になるまで、私はそれを機能させていました。表には、 の内部と一致する indesignという名前の列があります。テーブルを引き出す必要が本当にないので、それが理にかなっていることを願っています..useridusers

$result = mysql_query("
SELECT designs.*, users.* 
FROM designs, users 
WHERE type LIKE '%" . mysql_real_escape_string($search1) . "%' 
OR title LIKE '%" . mysql_real_escape_string($search1) . "%' 
OR tags LIKE '%" . mysql_real_escape_string($search1) . "%' 
OR description LIKE '%" . mysql_real_escape_string($search1) . "%' 
OR users.username = " . mysql_real_escape_string($search1) . " 
ORDER BY designs.id 
DESC
");

これが現在の外観であり、ユーザーが検索しているものです。 に接続した後、ユーザーの を検索してユーザーが作成したもの$search1を表示できるようにしたいのですが、うまくいきません。アイデア?designsusernamedesigns.userusers.id

mysql_error()また、「「where句」の「不明な列「namehere」」​​」というエラーが表示されます

4

1 に答える 1

1

内部結合のクエリはこれで、designs.<columnname>クエリのようにテーブル名を指定する必要があります。

    SELECT designs.*, users.* 
    FROM designs
    INNER JOIN users on users.id = designs.user
    WHERE designs.type LIKE '%<SEARCH TEXT>%' 
    OR desings.title LIKE '%<SEARCH TEXT>%' 
    OR designs.tags LIKE '%<SEARCH TEXT>%' 
    OR designs.description LIKE '%<SEARCH TEXT>%' 
    OR users.username = '<USER ID>' 
    ORDER BY designs.id 
    DESC

簡単な構文は

INNER JOIN <table name> <alias> ON <first table>.<column name> = <second table>.<column name>

大きな問題はmysql_*、API を使用していることです。これらのメソッドは非常に脆弱です。使用しないでください。

mysqli や PDO などの他の API を使用する場合mysql_real_escape_string、クエリを安全にするために使用する必要はありません。

于 2013-07-21T01:00:30.633 に答える