2017-07-07 3 views
0

私は、アーティストと3つのボタンのリストを持つページを持っています。カメラマン、メイクアップアーティスト、すべての設定されていないときにSQLクエリをフィルタリングしないようにパラメータを設定する方法

私はボタンのいずれかが最初の二つは、私がURLを設定できるため容易なクリックされたときに、$ _GETを介して各タイプを選択するために、データベースを照会したいの?タイプ=写真家

しかし、私はすべての種類を設定したい場合、すべてと呼ばれるタイプの列には値がありません、私は型に*を設定しようとしましたが、それはすべて表示するようにタイプを設定する方法

SELECT name, location, score, type FROM artists WHERE type = ? 

を動作しません。変数はどのように等しくなければなりませんか?

私は既に空のメソッドを使用していますが、今度はクエリにルールを追加したいと思っています。複雑になりつつあります。

+1

sql-queryに 'WHERE ...'を追加しないでください。 –

答えて

0
$cond = 1; 
if(!empty($_GET)){ 
    $cond = ' type = '.$_GET['your-query-string']; 
} 

SELECT name, location, score, type FROM artists WHERE $cond 
+2

「WHERE 1」?真剣に? –

+0

はい確かにそれに行く –

+4

2番目の質問 - SQLインジェクション。それは何ですか? –

0

$ _GETで条件を実行して、それに応じてSQLクエリを変更してください。すべてのエントリを選択したい場合、WHEREは必要ありません。思え

$query = "SELECT name, location, score, type FROM artists"; 
if(!empty($_GET)) { 
    $whereArgs = "WHERE type = ".$_GET['your-query-string']; 
} 
// Run your query using `$query` here. 
-1

次のコードブロックは、あなたが直面している問題に渡って行いますtypeがALLの場合は、句を追加しません)。
2.すべてをクリックすると、実際にすべてのタイプ(写真家、メイクアップアーティスト)に合格し、
WHERE type IN()を確認してください。

+0

この提案は危険である。このようにしないでください。あなたは[SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)を広く読んでおり、実際には[Prepared Statements](http://php.net/manual /en/mysqli.quickstart.prepared-statements.php)を入力してください。 –

1

あなたは(もし句のタイプに基づいて、2つの選択肢、
1.お使いのベースのSQLクエリSELECT name, location, score, type FROM artistsを作成し、追加を持っている:

+0

最初のオプションでは、どのようにタイプがあるときだけ返すいくつかのPHPを入力するクエリを停止するには、私はどのようにPHPの中に入れてSQLの例を与えることができますか? – Krim

+0

私は申し訳ありませんが、PHPの構文に精通していない、なぜちょうどスクリプトを書くのではなく、アイデアを提案した。 clickイベントの値を確認してSQL文を更新して実行するのは難しくありません。私は間違っていると推測しているかもしれません。 – money

関連する問題