0

ユーザーが入力できるいくつかの変数を試して$_GETいます(基本的なWebサーバーの作成に忙しい):

$users= strval($_GET['user']);
$price= intval($_GET['price']);
$productID= intval($_GET['productid']);

これは私のクエリです:

$query = "SELECT * FROM `table` WHERE `user` = '" . $user . "' AND `price` <= " . $price . " AND `productID` = " . $productID; 

(このようなもの)

この理論的なリンクを考えると:

www.example.com/api.php?price=300

残りの GET (user および productID) は使用しないでください。自動的に 0 または '' (int/string) が入力されます。

ifだから私はステートメントを使うことができると思った:

if(price == 0){
   // change the query without the price as WHERE
}

しかし、price と productID、または productID と user を変数として組み合わせた場合はどうなるでしょうか。

これを処理する最善の方法は何ですか? ばかげた質問かもしれませんが、わかりません。

4

3 に答える 3

2

結合された IF ステートメントを使用して、変数が提供されている場合はそれらを使用して適切なクエリを作成できます (提供されていない場合は無視します)。

$query = "SELECT * FROM `table` WHERE 1"; // WHERE 1 means "return all rows from table"

if ( isset( $_GET['price'] ) ){ // Only if price variable is set
    $query .= " AND price <= '{$_GET['price']}'"; // Restrict results by price
}

if ( isset( $_GET['user'] ) ){ // Only if user variable is set
    $query .= " AND user LIKE '{$_GET['user']}'"; // Restrict results by user
}

if ( isset( $_GET['productID'] ) ){ // Only if user variable is set
    $query .= " AND productID = '{$_GET['productID']}'"; // Restrict results by productID
}
于 2012-10-16T22:19:20.910 に答える
0

三項演算子を使用してクエリ文字列を正しく作成し、設定時に価格句を連結できます。

$query = "select * from table where user = $user" . ($price ? " AND price <= $price" : "") . " AND productID = $productID";

あなたの英語は下手です、私たちはブラジル人ですo/

于 2012-10-16T22:22:22.950 に答える
0
$users = $_GET['user'] || "";
$price = $_GET['price'] || 0;
$productID = $_GET['productid'] || 0;
$query = "SELECT * FROM table WHERE 1";

$query .= (isset($_GET['user'))?"AND user = '{$users}'";
$query .= (isset($_GET['price'))?"AND price <= '{$price}'";
$query .= (isset($_GET['productid'))?"AND productID = '{$productID}'";

変数を別の用途に使用したい場合。データに値が設定されていない場合は、値が0or ""(空の文字列) に設定され$_GETます。

于 2012-10-16T22:24:36.663 に答える