无法弄清楚如何在PHP中编码

时间:2012-10-16 22:14:30

标签: php

我正在尝试$_GET用户可能输入的一些变量(忙于制作基本的网络服务器):

$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和用户组合为变量,那该怎么办呢。

处理此问题的最佳方法是什么?也许这是一个愚蠢的问题,但我无法弄清楚。

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

您可以使用三元运算符正确创建查询字符串,在设置时连接price子句。

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

你的英语很差,我们是巴西人o /

答案 2 :(得分: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}'";

如果您想将变量用于其他内容。如果未在0数据中设置值,则会将值设置为""$_GET(空字符串)。