我正在编写一个 PHP 脚本,该脚本接受一个包含名为 bookTypeID
的参数的 JSON 请求。
此 bookTypeID
参数可以是整数值(例如 1,2,3,4)或字符串值“all”。
我将此参数用作 SQL 查询的 WHERE 子句的输入。
我希望我的查询说 SELECT name FROM books WHERE $bookTypeID
,如果 $bookTypeID
是一个整数,它会工作正常,但我不知道正确的值在 JSON 参数值为“all”的情况下传递给 WHERE
子句。我想要一些本质上说“忽略 WHERE 子句”的东西。
我希望这是有道理的。我在下面发布了我的代码的简化版本:
<?php
include 'db_conf.php';
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_errno) {
printf("Connect failed: %s\n", $conn->connect_error);
exit();
}
$content = file_get_contents('php://input');
$json = json_decode($content, true);
$bookTypeIDString = $json["bookTypeID"];
$bookTypeID;
switch($bookTypeIDString){
case "all":
$bookTypeID = "all"; // IS THERE A VALUE HERE THAT I CAN PASS TO AN SQL QUERY TO RETURN EVERYTHING? i.e. IGNORE THE WHERE CLAUSE COMPLETELY?
break;
default:
$bookTypeID = $bookTypeIDString;
}
$query = "SELECT name FROM books WHERE booktype = $bookTypeID";
$result = $conn->query($query);
$data = array();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$data[] = $row;
}
echo json_encode($data);
$conn->close();
?>
更新:这是一个简化的例子,目的是问我的问题。实际上,我有大约 50 个参数通过 JSON 传递,因此我想避免使用条件 PHP 构建 SQL 语句。我希望我可以传递一个 SQL 值,它将返回所有内容。
最佳答案
您可以根据 $bookTypeID 的输入/类型更改您的 SQL 查询。因此,如果需要,只需附加 where 子句即可。
这样,您不必更改数据库字段并保持此时的工作流程一致。
if($bookTypeID == 'all') {
$query = "SELECT name FROM books";
} else {
$query = "SELECT name FROM books WHERE booktype = $bookTypeID";
}
关于php - 如何使用 WHERE = 'all' 编写 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39123482/