2016-07-04 62 views
0

这里是sql查询,它在phpmyadmin上测试时工作正常。 下面是截图。查询返回空的结果在PHP中,但工作正常否则

SQL query working on phpmyadmin

下面是PHP代码和它

<?php 

    header('Content-type=application/json;charset=utf-8'); 

    include("connection.php"); 
    session_start(); 
    if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 

    $event_date1= mysqli_real_escape_string($con,$_POST['event_date1']); 
    $event_date2= mysqli_real_escape_string($con,$_POST['event_date2']); 



    $query = ("SELECT topic1 as topic from feedbackform_db where topic1 is not null AND event_date between $event_date1 AND $event_date2 
     union SELECT topic2 as topic from feedbackform_db where topic2 is not null AND event_date between $event_date1 AND $event_date2 
     union SELECT topic3 as topic from feedbackform_db where topic3 is not null AND event_date between $event_date1 AND $event_date2 
     union SELECT topic4 as topic from feedbackform_db where topic4 is not null AND event_date between $event_date1 AND $event_date2 
     union SELECT topic5 as topic from feedbackform_db where topic5 is not null AND event_date between $event_date1 AND $event_date2 
     union SELECT topic6 as topic from feedbackform_db where topic6 is not null AND event_date between $event_date1 AND $event_date2 
     union SELECT topic7 as topic from feedbackform_db where topic7 is not null AND event_date between $event_date1 AND $event_date2 
     union SELECT topic8 as topic from feedbackform_db where topic8 is not null AND event_date between $event_date1 AND $event_date2 "); 



    $response=mysqli_query($con,$query); 

    if($response) 
    echo "true"; 
    else 
    echo "false"; 


    // set array 
    $array = array(); 

    // look through query 
    while($row = mysqli_fetch_assoc($response)) 
    { 

    // add each row returned into an array 
    $array[] = $row; 

    // OR just echo the data: 
    echo $row['topic']; // etc 
    } 

    $data['details']=$array; 
    echo json_encode($data); 

    print_r($array); 
    // echo json_encode($array); 
} 

mysqli_close($con); 

?> 



<html> 
<head> 
    <title>client welcome Page</title> 

    <style type = "text/css"> 

     body \{ 

      font-family:Arial, Helvetica, sans-serif; 

      font-size:14px; 

     \} 

     label \{ 

      font-weight:bold; 

      width:100px; 

      font-size:14px; 

     \} 



     .box \{ 

      border:#666666 solid 1px; 

     \} 

     </style> 



    </head> 



    <body bgcolor = "#FFFFFF"> 



     <div align = "center"> 

     <div style = "width:300px; border: solid 1px #333333; " align = "left"> 

      <div style = "background-color:#333333; color:#FFFFFF; padding:3px;"><b>Login</b></div> 



      <div style = "margin:30px"> 



       <form action = "" method = "post"> 


        <label>event_date1:</label><input type = "text" name = "event_date1" class = "box" /><br/><br /> 
        <label>event_date2:</label><input type = "text" name = "event_date2" class = "box" /><br/><br /> 






        <input type = "submit" value = " Submit "/><br /> 

       </form> 



       <div style = "font-size:11px; color:#cc0000; margin-top:10px"></div> 



      </div> 



     </div> 



     </div> 


    </body> 

</html> 

当我在localhost.Result运行此HTML表单是空的,没有错误。 但查询运行它的表现“真”为响应变量

这是结果

真{“细节”:[]}阵列()

为什么我在没有得到值数组?

+1

检查什么是呼叫的MySQL前的'$ query'值。 – Alex

+0

空结果集不是错误。这是恰好不包含行的完美有效结果。你需要检查mysqli_num_rows()来查看你匹配了多少行,这无疑会回到'0',留下一个空数组。 –

+0

确保您获得活动日期值? –

回答

1

你的PHP代码都不可能重复的,你必须在phpMyAdmin的事情:escape()呼叫确实报价值给你,所以你产生

SELECT ... event_date between 2016-06-03 and 2016-06-08 

注意到周围缺乏报价相当于你日期。这意味着他们日期尽可能的MySQL而言,他们的数学加减法运算,和你正在做的相当于:

SELECT ... event_date between 2007 and 2002 

由于这是一个不可能的条件满足(between必须smaller AND larger,你有larger AND smaller),你得到0行,你仍然得到一个有效的结果句柄,并最终得到一个空的数组。

你应该有

$query = ("SELECT [...snip..] between '$event_date1' AND '$event_date2' 

(注意'引号)为您的会员选择的查询中的每一个。

+0

It Worked.thanks –

1

尝试增加单引号'$event_date1' AND '$event_date2'

$query = ("SELECT topic1 as topic from feedbackform_db where topic1 is not null AND event_date between '$event_date1' AND '$event_date2' 
     union SELECT topic2 as topic from feedbackform_db where topic2 is not null AND event_date between '$event_date1' AND '$event_date2' 
     union SELECT topic3 as topic from feedbackform_db where topic3 is not null AND event_date between '$event_date1' AND '$event_date2' 
     union SELECT topic4 as topic from feedbackform_db where topic4 is not null AND event_date between '$event_date1' AND '$event_date2' 
     union SELECT topic5 as topic from feedbackform_db where topic5 is not null AND event_date between '$event_date1' AND '$event_date2' 
     union SELECT topic6 as topic from feedbackform_db where topic6 is not null AND event_date between '$event_date1' AND '$event_date2' 
     union SELECT topic7 as topic from feedbackform_db where topic7 is not null AND event_date between '$event_date1' AND '$event_date2' 
     union SELECT topic8 as topic from feedbackform_db where topic8 is not null AND event_date between '$event_date1' AND '$event_date2' ");