3

MySQLデータベースで一致基準を検索するphp関数にオプションのパラメーターを指定するのに助けが必要です。

シナリオ: フロントエンド = authorName、authorCountry、authorState などの名前の 6 つの HTML 入力フォーム フィールドがあります。

ユーザーがこのフィールドに入力すると、データベースを検索するための mysql パラメータとしてフィールド値が渡されます。ここでの問題は、ユーザーが米国の著者のリストを知りたい場合、国フィールドに米国と入力し、他のフィールドを離れることです。ただし、他のフィールドが空白のままであるため、これにより mysql クエリが壊れます。

私はやってみましたが、それは私にとってはうまくいきません。

function getAuth(authName=NULL, authCoun=NULL, authSate=NULL) {
$query = mysql_query("SELECT * FROM authTable WHERE authName='authName'
AND authCoun='authCoun' AND authSate='authSate'");
return $query; }

オプションのパラメータを渡すのを手伝ってください。

ありがとうございました..

4

3 に答える 3

7
function getAuth($authName=NULL, $authCoun=NULL, $authSate=NULL) {
    $sql = "SELECT * FROM authTable WHERE 1 = 1";
    if ($authName) {
        $sql .= " AND authName='$authName'";
    }
     if ($authCoun) {
        $sql .= " AND authCoun='$authCoun'";
    }
     if ($authSate) {
        $sql .= " AND authSate='$authSate'";
    }
    return mysql_query($sql);
 }

関数に渡す前に、これらの変数がエスケープされていることを確認してください。

于 2012-09-26T11:18:52.880 に答える
5

このようにしてください:

SELECT * 
FROM authTable 
WHERE 1 = 1
  AND (@authName IS NULL OR authName = @authNameParam)
  AND (@authCoun IS NULL OR authCoun = @authCounParam)
  AND (@authSate IS NULL OR authSate = @authSateParam)
 ...

このクエリにパラメーターがまったく渡されなくても、このクエリは壊れません。つまり、値を指定してすべて渡された場合、句NULL全体が、まるで句がなかったかのように動作します。WHEREWHERE 1 = 1SELECT * FROM authtableWHERE

于 2012-09-26T11:15:09.443 に答える
0

関数はこのようにする必要があります

function getAuth(authName=NULL, authCoun="Default value", authSate="Default value") {}

関数のデフォルト値に値を渡さないと、来ます。

于 2012-09-26T11:16:08.450 に答える