Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Php)使用多个选项创建搜索查询,但使用MONTHNAME和YEAR_Php_Mysql_Database_Search - Fatal编程技术网

(Php)使用多个选项创建搜索查询,但使用MONTHNAME和YEAR

(Php)使用多个选项创建搜索查询,但使用MONTHNAME和YEAR,php,mysql,database,search,Php,Mysql,Database,Search,我有一个表单,有3个下拉列表,其中有不同的标准,一个是搜索月份(mes)、年份(ano)和类型(tipo_id) 我想做的是,多亏了这里的许多问题,我才能够来到这里,当你从3个下拉列表中选择一些东西,2或1,它会显示一个表格,其中引用了关于它的信息,我可以做,但就tipo_id而言,我想问题在于我在代码中使用的MONTHNAME和YEAR,我想知道如何才能使这项工作,提前谢谢 // Connect to server and select database. mysql_connect("$h

我有一个表单,有3个下拉列表,其中有不同的标准,一个是搜索月份(mes)、年份(ano)和类型(tipo_id)

我想做的是,多亏了这里的许多问题,我才能够来到这里,当你从3个下拉列表中选择一些东西,2或1,它会显示一个表格,其中引用了关于它的信息,我可以做,但就tipo_id而言,我想问题在于我在代码中使用的MONTHNAME和YEAR,我想知道如何才能使这项工作,提前谢谢

 // Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$mes = mysql_real_escape_string($_POST['mes']);
$ano = mysql_real_escape_string($_POST['ano']);
$tipo = mysql_real_escape_string($_POST['tipo_id']);


$meses = array( 
  Janeiro => 'January', 
  Fevereiro =>'February', 
  Março =>'March', 
  Abril =>'April', 
  Maio =>'May', 
  Junho =>'June', 
  Julho => 'July', 
  Agosto =>'August', 
  Setembro =>'September', 
  Outubro =>'October', 
  Novembro =>'November', 
  Dezembro =>'December' 
); 


$sql4 = "SELECT * FROM fluxo ";
$searches = array();
if ($mes  != '') $searches[] = " OR MONTHNAME(data) = '".$meses[$mes]."'";
if ($ano  != '') $searches[] = " OR YEAR(data) = '".$ano."'";
if ($tipo != '') $searches[] = " OR tipo = '".$tipo."'";
if (count($searches) > 0) {
   $sql4 .= " WHERE 1 " . implode(" AND ", $searches);

echo "sql4=$sql4\n";



//$sql4 = "SELECT tipo, movimento, valor, data FROM fluxo WHERE tipo = '".$tipo."' AND MONTHNAME(data) = '".$meses[$mes]."' AND YEAR(data) = '".$ano."' ";
//$result4=mysql_query($sql4); 

$result5 = mysql_query('SELECT SUM(valor) AS value_sum FROM fluxo GROUP BY tipo having count(tipo)>1'); 
$row5 = mysql_fetch_assoc($result5); 
$sum5 = $row5['value_sum'];

$n=1; 

echo "<p>Os seus resultados:<p>";

echo "<table border=0>";
echo "<tr bgcolor='#CCFFCC'>";
echo "<td style='width: 100px;'>Tipo</td>";
echo "<td style='width: 100px;'>Movimento</td>";
echo "<td style='width: 100px;'>Valor</td>";
echo "<td style='width: 100px;'>Data</td>";
echo "</tr>";

while($row = mysql_fetch_array($result4)){ 
    echo "<tr bgcolor='#CCCCCC'>";
    echo "<td style='width: 100px;'>".$row['tipo']."</td>";
    echo "<td style='width: 100px;'>".$row['movimento']."</td>";
    echo "<td style='width: 100px;'>".$row['valor']."</td>";
    echo "<td style='width: 100px;'>".$row['data']."</td>";
    echo "</tr>";

}

echo "</table>";
//连接到服务器并选择数据库。
mysql_connect(“$host”、“$username”、“$password”)或die(“无法连接”);
mysql_select_db($db_name)或die(“无法选择db”);
$mes=mysql\u real\u escape\u字符串($\u POST['mes']);
$ano=mysql\u real\u escape\u字符串($\u POST['ano']);
$tipo=mysql\u real\u escape\u字符串($\u POST['tipo\u id']);
$meses=数组(
里约热内卢=>“一月”,
Fevereiro=>二月,
Março=>三月,
Abril=>“四月”,
Maio=>“五月”,
Junho=>“June”,
Julho=>“July”,
Agosto=>“八月”,
Setembro=>“九月”,
Outubro=>“十月”,
Novenbro=>11月,
Dezembro=>“十二月”
); 
$sql4=“从fluxo中选择*”;
$searches=array();
如果($mes!='')$searches[]=”或MONTHNAME(data)='“$meses[$mes]。”;
如果($ano!='')$searches[]=”或年份(数据)='“$ano.”;
如果($tipo!='')$searches[]=”或tipo='“$tipo.”;
如果(计数($searches)>0){
$sql4.=“其中1”。内爆(“AND”,$searches);
echo“sql4=$sql4\n”;
//$sql4=“从fluxo中选择tipo、movimento、valor、数据,其中tipo='”、“$tipo.”和MONTHNAME(数据)='”、“$meses[$mes]”和年份(数据)='”、“$ano.”;
//$result4=mysql\u查询($sql4);
$result5=mysql_查询('SELECT SUM(valor)作为tipo拥有count(tipo)>1的fluxo组的值_SUM');
$row5=mysql\u fetch\u assoc($result5);
$sum5=$row5['value_sum'];
$n=1;
echo“Os seus resultados:”;
回声“;
回声“;
呼应"提婆",;
呼应“Movimento”;
呼应“英勇”;
回声“数据”;
回声“;
而($row=mysql\u fetch\u数组($result4)){
回声“;
回显“$row['tipo']”;
回显“$row['movimento']”;
回显“$row['valor']”;
回显“$row['data']”;
回声“;
}
回声“;
这应该可以:

$sql4 = "SELECT * FROM fluxo ";
$searches = array();
if ($mes  != '') $searches[] = " MONTHNAME(data) = '".$meses[$mes]."'";
if ($ano  != '') $searches[] = " YEAR(data) = '".$ano."'";
if ($tipo != '') $searches[] = " tipo = '".$tipo."'";
if (count($searches) > 0) {
   $sql4 .= " WHERE 1 " . implode(" AND ", $searches);
}

在内爆
$searches
后,您将得到一个最多包含3个
WHERE
关键字的查询。删除前两个
WHERE
s应该可以做到这一点。

它不起作用,它只显示了我从“tipo\u id”中选择的所有内容…也许我失踪了something@Fabiotp91您确定处理的是正确的MySQL结果吗?Omesh的代码将生成一个类似于
SELECT…WHERE 1或…AND或…AND或…AND或…
的查询,该查询无法返回任何内容,因为语法不正确。另一种可能是$\u POST['mes']和$\u POST['ano']没有设置或为空。我试过了,但仍然不起作用,我的代码肯定有其他问题最初我没有这些代码,但即使这样,它也只带来了“tipo__id”的结果,而不尊重“ano”和“mes”的结果