php - IF 规则 $_POST PHP - MYSQL

标签 php mysql post if-statement

更新

我已将代码改进为:

$query_init = "SELECT * FROM data WHERE 1=1";


24 // $_POST to PHP var.
25 $t_bebida = $_POST['t_bebida'];
26 $t_uf = $_POST['t_UF'];
27 $t_canal = $_POST['t_canal'];
28 $t_ano = $_POST['t_ano'];
29
30 if ($t_bebida != "Todos") {
31   $query_final .= " AND BEBIDA = '$t_bebida'";};
32  
33 if ($t_ano != "Todos") {
34    $query_final .= " AND ANO = '$t_ano'";};
35
36 if ($t_uf != "Todos") {
37    $query_final .= " AND UF = '$t_uf'";};
38
39 if ($t_canal != "Todos") {
40   $query_final .= " AND CANAL = '$t_canal'";};
41  
42 $query = $query_init . $query_final;

但是当我收到 t_bebida 的“todos”时,我收到此错误:

Notice: Undefined variable: query_final in /*/ on line 36

有什么帮助吗?

不久前,我问了一个关于 $_POST 处理的问题。

但他们回答我,我需要重新编写查询并执行一些 IF 才能正确运行查询。

我有这样的情况:

用户将通过 $_POST 发送此变量:

t_bebida
t_uf
t_canal
t_ano

这些变量中的每一个都可以带有“Todos”值。

为了举例说明这种情况,这是我的代码:

$query_init = "SELECT * FROM data WHERE";

// $_POST to PHP var.
$t_bebida = $_POST['t_bebida'];
$t_uf = $_POST['t_UF'];
$t_canal = $_POST['t_canal'];
$t_ano = $_POST['t_ano'];

//IF BEBIDA == todos
if ($t_bebida == "Todos") {
$query_final = " UF = '$t_uf' AND CANAL = '$t_canal' AND ANO = '$t_ano' ORDER BY BEBIDA ASC";}

//IF UF == todos
if ($t_uf == "Todos") {
$query_final = " BEBIDA = '$t_bebida' AND UF = '$t_uf' AND CANAL = '$t_canal' AND ANO = '$t_ano'";} 

//IF CANAL ==todos
if ($t_canal == "Todos") {
$query_final = " BEBIDA = '$t_bebida' AND UF = '$t_uf' AND ANO = '$t_ano'";}

//IF ANO == todos
if ($t_canal == "Todos") {
$query_final = " BEBIDA = '$t_bebida' AND UF = '$t_uf' AND CANAL = '$t_canal'";}

//IF BEBIDA + UF == todos
if ($t_bebida == "Todos" and $t_uf == "Todos") {
$query_final = " CANAL = '$t_canal' AND ANO = '$t_ano'";}

//IF BEBIDA + UF + CANAL == todos
if ($t_bebida == "Todos" and $t_uf == "Todos" and $t_canal == "Todos") {
$query_final = " ANO = '$t_ano'";}

//IF BEBIDA + UF + ANO == todos
if ($t_bebida == "Todos" and $t_uf == "Todos" and $t_ano == "Todos") {
$query_final = " CANAL = '$t_canal'";}

//IF BEBIDA + CANAL == todos
if ($t_bebida == "Todos" and $t_canal == "Todos"){
$query_final = " UF = '$t_uf' AND ANO = '$t_ano'";}

//IF BEBIDA + CANAL + ANO == todos
if ($t_bebida == "Todos" and $t_canal == "Todos" and $t_ano == "Todos"){
$query_final = " UF = '$t_uf'";}

//IF BEBIDA + ANO == todos
if ($t_bebida == "Todos" and $t_ano == "Todos"){
$query_final = " UF = '$t_uf' AND CANAL = '$t_canal'";}

//IF UF + CANAL == todos
if ($t_uf == "Todos" and $t_canal == "Todos"){
$query_final = " BEBIDA = '$t_bebida' AND ANO = '$t_ano'";}

//IF UF + ANO == todos
if ($t_uf == "Todos" and $t_ano == "Todos"){
$query_final = " BEBIDA = '$t_bebida' AND CANAL = '$t_canal'";}

//IF UF + CANAL + ANO == todos
if ($t_uf == "Todos" and $t_canal == "Todos" and $t_ano == "Todos"){
$query_final = " BEBIDA = '$t_bebida'";}

//IF CANAL + ANO == todos
if ($t_uf == "Todos" and $t_ano == "Todos"){
$query_final = " BEBIDA = '$t_bebida' AND CANAL = '$t_canal'";}

//IF NONE == todos
if ($t_bebida != "Todos" and $t_uf != "Todos" and $t_ano != "Todos" and $t_UF != "Todos" and $t_canal != "Todos"){
$query_final = " BEBIDA = '$t_bebida' AND UF = '$t_uf' AND CANAL = '$t_canal' AND ANO = '$t_ano'";}

// Build-UP query
$query = $query_init . $query_final;

这对我不起作用,它仅适用于“t_bebida == todos”或“none == todos”。

所以,我面临的是我没有正确构建查询的 IF。

谁能帮我解答一下吗?...

谢谢

最佳答案

Todos 的翻译.

最好重写你的代码。并使用this feature .

$query_init = "SELECT * FROM data WHERE 1=1";
$query_final = '';

if ($t_bebida != "Todos") 
    $query_final .= " AND BEBIDA = '$t_bebida'";

if($t_ano != "Todos")
    $query_final .= " AND ANO = '$t_ano'";

if ($t_uf != "Todos")
    $query_final .= " AND UF = '$t_uf'";

if ( $t_canal != "Todos")
    $query_final .= " AND CANAL = '$t_canal'";

$query = $query_init . $query_final;

另外不要忘记使用准备好的语句。

关于php - IF 规则 $_POST PHP - MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20039921/

相关文章:

mysql - 从 View 调用存储过程

php - 安全疑虑 : Mysqli vs PDO

post - 成功页面上的 Paypal 返回变量

php - 是否可以在 PHP 函数内部将变量设置为全局变量?

php - 使用 PHP/MySQL 进行电话号码搜索 - 最佳实践?

php - 将mysql表插入div中

post - 在 Swagger 中更改为 Url-Form-Encoded Post 请求

PHP:为什么日期要做成数组?

php - 寻找用于 windows 的 SMTP 服务器

c - 如何在LoadRunner中使用POST方法重写函数并使用GET方法?