2012-05-02 8 views
0

たとえば、WHEREという単語を使ってmysql検索を実行する方法を知っています。しかし、私の問題は、私は別の値で検索する必要がありますが、これらの数が異なることができます。例:Mysql - PHPの異なる値の検索

私は3つの変数を検索できます。名前、姓、年齢 BUT 私は他の検索で2つの変数名、年齢を検索できます。

同じスクリプトを使用してMYSQL検索を実行する方法はありますか?検索する値の数に関係なく

Ot固定量の変数の検索を「強制」するのが良い方法です。

ありがとうございます!

ロベルト

答えて

0

私見、変数の固定数に検索を制限することがはるかに良いです。そうすることで、具体的な理由で具体的な質問に答えることができます。具体的な質問に一般的な答えを当てようとするのではありません。検索基準を限定することで、ステートメントをデバッグしやすくし、パフォーマンスを向上させることができます。

これが役に立ちます。

+0

IMHOとは? –

+0

私の謙虚な意見で – geoB

0

検索パラメータに変数を使用し、それをクエリに挿入するだけです。ただ、関数/メソッドでは、あなたが適切な形式に変数を入れていることを確認します(別の値を選択する方法によって異なります。)

SELECT * 
FROM db 
$variable; 

それは自分の価値観を渡されていない限り、見て何のWHERE句はございません(つまり、データベースの一般的な検索にこの同じクエリを使用することができます)空/必要の恐れなし$variable

$variableの場合は、WHERE句を入力する必要があり、追加する各値を適切な形式で挿入します。

私は知らないとこれが意味をなさないと願っており、私は明確にしようとします。

また適切に注入する前に、変数をサニタイズしてください:これは、(彼らはWHEREの代わりにLIMITで変数を置く除く)

EDITページの区切りとすると、ほとんどの人が使用するのと同じ方法です。動的にクエリを構築する

+0

はい、私は理解しています...良い説明!私はこれを試してみる..ありがとう! –

0

簡単な例:

$conditions = array(); 

if (...) { 
    $conditions['age'] = $age; 
} 
if (...) { 
    $conditions['name'] = $name; 
} 
... 

if (!$conditions) { 
    die('No conditions supplied'); 
} 

// if you're still using the mysql_ functions and haven't done so before: 
$conditions = array_map('mysql_real_escape_string', $conditions); 

foreach ($conditions as $field => &$value) { 
    $value = "`$field` = '$value'"; 
} 

$query = 'SELECT ... WHERE ' . join(' AND ', $conditions); 

それは、動的に作成する正確なクエリを一緒に考え出すことは本当に難しいことではありません。 SQL構文を駄目にしたり、より多くの注入脆弱性に晒されたりしないように注意してください。 $conditions配列を実際のクエリを構築する関数に渡すことができるデータベース抽象化レイヤーを見ることができます。

+0

このコードは面白そうです...私はあなたがそれを荒らしたように試してみるつもりです!どうもありがとうございました。! –