gpt4 book ai didi

PHP MySQL GET 代码审查

转载 作者:行者123 更新时间:2023-11-29 06:49:02 24 4
gpt4 key购买 nike

我认为这是一个非常简单的问题。这是我最好的选择还是有“正确”的方法来做到这一点?

<?php  
$correctOrder = array("name", "address", "phone", "starttime", "endtime",
"status", "details");

$sql->sql1 = "SELECT * FROM `pickups` WHERE";

if (isset($_GET["name"])){
$sql->sql2 = "`name` LIKE '%" . $_GET['name'] . "%'";
}
if (isset($_GET["address"])){
if (!isset($_GET['name'])){
$q = "`address` LIKE '%" . $_GET['address'] . "%'";
} else {
$q = "AND `address` LIKE '%" . $_GET['address'] . "%'";
}
$sql->sql3 = $q;
}
...
...

echo implode(" ", (array) $sql);
?>

所以,现在:

?name=Jari%20Martikainen&address=some%20random%20street

?name=Jari%20Martikainen&address=some%20random%20street&blah=har

?address=some%20random%20street&blah=har&name=Jari%20Martikainen

都返回所需的相同结果,但这似乎不是一种非常有效的做事方式。

最佳答案

构建 AND 子句的数组 ($ands),但没有“AND”。

$ands = array();
if (...)
$ands[] = "name LIKE ...";
if (...)
$ands[] = "address LIKE ...";
...

然后构建查询:

$query = "SELECT ... WHERE " . implode(' AND ', $ands);

我发现这种模式简单、干净,并且避免了诸如 1=1 之类的困惑或删除了额外的 AND

关于PHP MySQL GET 代码审查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48238201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com