使用$ _POST处理的Mysql查询

时间:2013-11-18 02:16:11

标签: php mysql post if-statement

我有这样的查询:

$query = "SELECT * FROM dados_kirin WHERE BEBIDA = '$_POST[t_bebida]' AND UF = '$_POST[t_UF]' AND CANAL = '$_POST[t_canal]' AND ANO = '$_POST[t_ano]'";

上面的查询将无法正常运行,因为t_bebida可以是ALL。

我想对待$ _POST。如果是ALL,则必须将其翻译为*。

我尝试过类似的事情:

= $_POST[t_bebida] = $bebida;
if ($bebida = "Todos") {
    $bebida = '*'
    };

但Dreamweaver告诉我这是错误的。

有人知道这样做的方法吗?

我正在使用PHP和MYSQL。

谢谢你们!

更新

我试过这个:

$t_bebida = $_POST[t_bebida];
if ($t_bebida == "Todos") {
    $t_bebida = '*';
    }

但我制作了一个糟糕的查询结构。

我认为我需要的是:

if($ t_bebida ==“Todos”),不要在WHERE子句中使用BEBIDA。

$query = "SELECT * FROM dados_kirin WHERE BEBIDA = '$_POST[t_bebida]' AND UF = '$_POST[t_UF]' AND CANAL = '$_POST[t_canal]' AND ANO = '$_POST[t_ano]'";

更新2

  

很抱歉,这个问题在查询中有一些MySQL结构错误。谢谢   所有的努力尝试帮助我。与此同时,我会解决它。

2 个答案:

答案 0 :(得分:3)

语法中有多个错误:

$_POST[t_bebida] = $bebida;
if ($bebida = "Todos") {
    $bebida = '*'
    };

1st:您$bebida的变量分配:

$bebida = $_POST[t_bebida];

第二名:$ _POST变量应为:

$bebida = $_POST['t_bebida']; //assuming that in your form you have an input name=t_bebida

第3名:在你的if语句中,这应该是:

if ($bebida == "Todos") {
第4页:表达式上缺少分号:

$bebida = '*';
             ^ here

第五:你不必在if语句的结束花括号上加分号。现在这是最终版本:

$bebida = $_POST['t_bebida'];
if ($bebida == "Todos") {
    $bebida = '*';
}

更新

我还注意到,查询中的$_POST变量不正确地访问,就像在第二项中一样。此外,您必须清理您的帖子变量以防止SQL注入。


以防万一:

请注意mysql扩展名is now deprecated and will be removed sometime in the future。那是因为它古老,充满了不良做法,缺乏一些现代特色。不要用它来编写新代码。请改用PDOmysqli_*

答案 1 :(得分:0)

您的比较运算符错误。你正在使用=这是一个赋值运算符。在你的例子中,它将永远是真的。您需要使用==这是一个比较运算符。

if ($bebida = "Todos") {

应该是

if ($bebida == "Todos") {