Mysql 查询,处理 $_POST


Mysql query with $_POST treatment

我有一个这样的查询:

$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 = '*'
    };

但织梦者告诉我,这是错误的。

有人知道

一种方法吗?

我正在使用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 结构错误。谢谢 为了所有的努力,试图帮助我。同时我会修复它。

语法中有多个错误:

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

第一:$bebida的可变分配:

$bebida = $_POST[t_bebida];

第 2 个:$_POST 变量应为:

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

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

if ($bebida == "Todos") {

第四:表达式上缺少分号:

$bebida = '*';
             ^ here

第五:您不必在 if 语句的右大括号上加上分号。现在是最终版本:

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

更新

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


以防万一:

请注意,mysql 扩展现已弃用,并将在将来的某个时候被删除。那是因为它很古老,充满了不良做法,缺乏一些现代功能。不要用它来编写新代码。请改用 PDO 或 mysqli_*。

您的比较运算符是错误的。您正在使用 = 作为赋值运算符。在您的示例中,它将始终为真。您需要使用 == 这是一个比较运算符。

if ($bebida = "Todos") {

应该是

if ($bebida == "Todos") {