我正在尝试$_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和用户组合为变量,那该怎么办呢。
处理此问题的最佳方法是什么?也许这是一个愚蠢的问题,但我无法弄清楚。
答案 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
(空字符串)。