Php 联接同一表和筛选器的两个SQL select查询

Php 联接同一表和筛选器的两个SQL select查询,php,Php,我有一个医生表,下面给出了以下列,我想使用提交按钮按日期获取详细信息。但我无法过滤查询以获取同一个表的详细信息。我正在将日期转换为特定的日期,并将其存储在$day变量和$available变量中,方法是从上一页传输会话变量的值,并在两个SQL查询中实现它。谁能给我指路吗?我为任何打字错误感到抱歉 医生: id doctorname date1 day1 day2 day3 day4 day5 day6 day7 1 arvind 2018-05-29

我有一个医生表,下面给出了以下列,我想使用提交按钮按日期获取详细信息。但我无法过滤查询以获取同一个表的详细信息。我正在将日期转换为特定的日期,并将其存储在
$day
变量和
$available
变量中,方法是从上一页传输会话变量的值,并在两个SQL查询中实现它。谁能给我指路吗?我为任何打字错误感到抱歉

医生:

  id  doctorname    date1       day1 day2 day3 day4 day5 day6 day7
  1    arvind     2018-05-29   
  2    sonal      0000-00-00    mon   tue  wed  thu  fri  sat  sun
  3    harry      0000-00-00    mon   tue  wed  thu 

 <?php
   session_start();
   include 'connect.php';
   if(isset($_GET['submit'] ))
   { $date=$_GET['date'];
     $available= $_SESSION['available'];  
     $day=date('l', strtotime($date));

   $sql=mysqli_query($mysqli,"SELECT id,specilization,doctorName, 
   docFees, starttime, endtime,date1 FROM doctors WHERE 
  id= '$available' AND cast(date1 as date) = '$date'"  )
  UNION
  SELECT id,specilization,doctorName, docFees, starttime, endtime,date1 
  FROM doctors WHERE id= '$available' AND DAY1='$day' OR DAY2='$day' AND
  DAY3='$day' OR DAY4='$day' AND  DAY5='$day' OR DAY6='$day' OR
  DAY7='$day'");
  $row = mysqli_fetch_array($sql);
  If(empty($_GET['date'])) 
  {  echo "ENTER DATE  PlEASE";}   
  elseif($row1>1) 
   {echo "Day:". $day;
     echo "<br>";
     ?>  <tr>
         <td><?php echo $row1['id'];?></td>
            <td><?php echo $row1['specilization'];?></td>
            <td><?php echo $row1['doctorName'];?></td>
            <td><?php echo $row1['docFees'];?></td>
             <td><?php echo $row1['starttime'];?></td>
              <td><?php echo $row1['endtime'];?></td>
              <td><?php echo $_SESSION['bdate'];?></td>

        </tr>
       </table>
       <?php }?>
id doctorname date1 day1 day2 day3 day4 day5 day6 day7
1 arvind 2018-05-29
2索纳尔0000-00-00周一周二周三周四周五周六周日
3.0000-00-00周一周二周三周四

您不需要
联合
,只需使用

$sql=mysqli_query($mysqli,"
    SELECT id,specilization,doctorName, docFees, starttime, endtime,date1 
    FROM doctors 
    WHERE id = '$available' 
    AND (cast(date1 as date) = '$date'
        OR '$day' IN (day1, day2, day3, day4, day5, day6, day7))");

我不完全确定你问的问题。不过,我几乎可以肯定,你在用锤子敲碎胡桃,提出所有这些问题。你能试着解释一下你想要达到的目标吗?最终用户是否只是输入了一个日期,然后列出了该日期可用的医生和他/她的技能?老实说,我会在数据库中的proc中完成这项工作,然后从网页上执行它。这将更易于编码和管理。您在调用
mysqli_query()
之外有
UNION
。为什么在
DAYx='$day'
条件之间同时使用
?我猜你想在(第1天、第2天、第3天、第4天、第5天、第6天、第7天)中输入类似于
“$day”的内容。
你好,斯蒂芬!我正设法从日期中获取医生的详细资料。我将日期转换为特定的日期,并将其与日期列进行匹配。之后,我将向sql查询写入日期和日期的医生,我希望当我仅获取特定日期或日期的详细信息时,应显示具有特定id的医生,否则该列应显示nothinghello barmar感谢您的回复。我的问题是,假设某位医生的预约时间为2018年5月29日,当我去取时,它会显示医生的详细信息,但当我在2015年5月31日提交给同一位医生时,详细信息应该不会显示任何内容,但它会显示其他医生的详细信息。同样的情况下,应遵循以下步骤:医生有一天。假设2018年5月29日是星期二,有身份证的医生应该只在那天出现。我希望你能理解我。你能帮我吗?我不明白你的问题。您能更新问题并显示一些样本输入和预期结果吗?好的,请查看上面给定的表格,arvind于2018年5月29日可用。现在假设我在2018年5月29日按提交按钮搜索arvind,则应显示arvind记录。现在,如果我按arvind id输入2018年5月31日,则应不显示任何内容可用。我想对从周一到周四的harry做同样的事情。因此,如果我选择从周一到周四的任何日期,则该日期首先转换为特定的日期,并检查日期列。现在harry的记录应仅显示周一到周四,而非周五,周六和周日。在问题中进行澄清,而不仅仅是评论。我之前错过了一个
。我修复了这个问题,并添加了一个SQLFIDLE演示,演示了它的工作原理。