我有一个这样的查询:
$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") {