0

JavaScript検索フォームから多くの変数を受け取るphpスクリプトがあります。問題は、これらの変数の一部が空である可能性があるため、クエリを実行する前にそれぞれを確認する必要があることです。例: ユーザーは学生の名前と ID を入力し、性別フィールドを空のままにすることができます。append を使用する必要があるかもしれないと読みましたが、その方法がわかりません。他に良いアイデアはありますか?

スクリプトの一部:

$name = ($_GET['name']); 
$id = ($_GET['id']);
$gender = ($_GET['gender']);

 (!$con) {
    throw new Exception("Error in connection to DB");
     }

   $query ="SELECT grade FROM students  WHERE name ILIKE '%$name%' ";
   $result = pg_query($query); 

編集

空関数と isset 関数を使用する場合、すべての変数をチェックして新しいクエリを作成する必要がありますか? チェック後に元のクエリを更新するにはどうすればよいですか?

4

4 に答える 4

2

PHPを使用するemptyと、次issetのように使用できます。

if (!isset($_GET['name']) || empty($_GET['name'])) {
  // Error detection, this field isn't available
}

この例では、設定されていない場合はfalseを返すためisset、実際には冗長であることに注意してください。empty

ドキュメントはここここにあります

于 2012-11-27T17:17:32.263 に答える
0

空 ( )

変数が空かどうかを判断します。

http://php.net/manual/en/function.empty.php

isset()

変数が設定されていて、NULLでないかどうかを判別します。

http://php.net/manual/en/function.isset.php

于 2012-11-27T17:17:04.893 に答える
0

箱の外で考えてください。

<?php
$first = TRUE;
$var_names = array('name', 'age', 'gender');

$query = "SELECT * FROM table WHERE"

foreach( $_GET as $key => $value ) {
    if( in_array($key, $var_names) && !empty($_GET[$key]) ) {
        if( $first ) {
            $query .= sprintf(" %s = '%s'", $key, $value);
            $first = FALSE;
        } else {
            $query .= sprintf(" AND %s = '%s'", $key, $value);
        }
    }
}
if( $first ) { die('no parameters given, query will error out.'); }
echo $query;

これもSQLインジェクションにとってはひどく安全ではありませんが、ここではパラメーター化されたクエリを実装するつもりはありません。

于 2012-11-27T17:33:55.817 に答える
0

次のように変数の内容を確認できます。

if (!empty($_GET['name'])) {
    // make your query
}
于 2012-11-27T17:17:58.997 に答える