PHP & MySQL : How can i neglect empty variables from select

标签 php mysql

如果我有 4 个变量并且我想从数据库中选择不同的值

<?php
$var1 = ""; //this variable can be blank
$var2 = ""; //this variable can be blank
$var3 = ""; //this variable can be blank
$var4 = ""; //this variable can be blank

$result = mysql_query("SELECT DISTINCT title,description FROM table WHERE **keywords ='$var1' OR author='$var2' OR date='$var3' OR forums='$var4'** ");

?>

注意:部分或全部变量($var1,$var2,$var3,$var4)可以为空

我想要什么: 我想忽略空白字段

假设 $var1(关键字)为空,它将选择所有空字段,但我希望如果 $var1 为空,结果将类似于

$result = mysql_query("SELECT DISTINCT title,description FROM table WHERE author='$var2' OR date='$var3' OR forums='$var4' ");

如果 $var2 为空,结果如下

$result = mysql_query("SELECT DISTINCT title,description FROM table WHERE keywords ='$var1' OR date='$var3' OR forums='$var4' ");

如果 $var1 和 $var2 为空,结果会是这样

$result = mysql_query("SELECT DISTINCT title,description FROM table WHERE date='$var3' OR forums='$var4' ");

等等

最佳答案

试试这个。


$vars = array(
  'keywords' => '', // instead of var1
  'author' => '',  // instead of var2
  'date' => '', // instead of var3
  'forums' => '', // instead of var4
);

$where = array();
foreach ($vars as $varname => $varvalue) {
  if (trim($varvalue) != '') $where[] = "`$varname` = '" . mysql_real_escape_string($varvalue) . "'";
}
$result = mysql_query("SELECT DISTINCT title, description FROM table WHERE " . join(" OR ", $where));

关于PHP & MySQL : How can i neglect empty variables from select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5200121/

相关文章:

php - 在迷你图中解析动态数据

php - 导致 html 解析的 CodeIgniter 表单助手文本输入字段

PHP 回显一周中的所有日子(strftime)

php - 静态网页 vs MySql 生成

mysql排序异常

MySQL用外键关系计算SUM

javascript - PHP 注册从返回到错误的 URL 而不是索引,数据库错误?

php - 重复项的消息框

mysql - 在一个查询中更新多个 MySQL 表时,是否始终保证分配顺序?

mysql - docker-compose 中的 django-mysql 连接拒绝连接