-2

私はこの問題を抱えており、最善かつ最も効率的な解決策を考え出そうとしています. 私は 19 の異なる入力を持つ php Web サイトを持っています。それらはすべてオプションであり、get メソッドを使用しています。これらの入力を使用して、データベースに一致する情報を見つけて返す必要があります。私が抱えている問題は、機能するクエリを作成することです。

$query = "SELECT * FROM TEST.table";
if(($_GET['Transmission_Line_Designation'] ==="") && ($_GET['Switch_Number'] === "") && ($_GET['Telecom_Circuit_Number'] === "")
    && ($_GET['Transmitter_Frequency'] === "") && ($_GET['Receiver_Frequency'] === "") && ($_GET['power_level'] === "")
    && ($_GET['Phase'] === "") && ($_GET['Modulate'] === "") && ($_GET['trap_type'] === "") &&  ($_GET['line_tuner_type'] === ""))
    //checks if there were no input, if there werent any, display all columns and rows from the data base
{

}
    else
{

これは私が問題を抱えている場所です。ユーザーが最初の入力を入力した場合、それは機能しますが、ユーザーが最初の入力を空白のままにすると、出てくるクエリは「どこで」「何か」であり、私は考えていました多くの if ループを使用して条件をチェックし、フラグを追加しますが、もっと簡単な方法があると確信しています。

        $query.= " where ";
        if
        $query .= ($_GET['Transmission_Line_Designation'] === "") ? '' :  'Line_Designation = "'.$_GET['Transmission_Line_Designation'].'"';
        $query .= ($_GET['Switch_Number'] === "") ? '' :  ' and Switch_Number = "'.$_GET['Switch_Number'].'"';
        $query .= ($_GET['Telecom_Circuit_Number'] === "") ? '' :  ' and Telecom_Circuit_Number = "'.$_GET['Telecom_Circuit_Number'].'"';
        $query .= ($_GET['Transmitter_Frequency'] === "") ? '' :  ' and Transmitter_Frequency = "'.$_GET['Transmitter_Frequency'].'"';
        $query .= ($_GET['Receiver_Frequency'] === "") ? '' :  ' and Receiver_Frequency = "'.$_GET['Receiver_Frequency'].'"';
        $query .= ($_GET['power_level'] === "") ? '' :  ' and power = "'.$_GET['power_level'].'"';
        $query .= ($_GET['Voltage'] === "") ? '' :  ' and voltage = "'.$_GET['Voltage'].'"';
        $query .= ($_GET['Phase'] === "") ? '' :  ' and Phase= "'.$_GET['Phase'].'"';
        $query .= ($_GET['Modulate'] === "") ? '' :  ' and Modulate = "'.$_GET['Modulate'].'"';
        $query .= ($_GET['trap_type'] === "") ? '' :  ' and trap = "'.$_GET['trap_type'].'"';
        $query .= ($_GET['line_tuner_type'] === "") ? '' :  'and ltunner = "'.$_GET['line_tuner_type'].'"';
        echo $query;
}

事前にご協力いただきありがとうございます。

4

3 に答える 3

0

以下を試して、いくつかのチェックも追加してください。

<?php

$sql   = "SELECT * FROM table WHERE ";
$count = count($_GET);

if ($count) { // check if $_GET has any values at all
    foreach ($_GET as $key => $value) {
        if ($value) { // check if $value not empty
            $sql .= $key . " = " . "'" . $value . "', ";
        }
    }

    $sql = rtrim($sql, ", ");
}

echo $sql;

?>
于 2013-07-08T21:02:49.933 に答える