2016-01-01 3 views
-3

если состояние не работает должным образом. запрос дает результат точно. у меня есть 3 поля для поиска 1. Имя сотрудника 2. Дата начала 3. Дата окончанияпоисковый запрос конкатенация не работает

, когда я искал со всеми полями, он работает правильно , когда я искал только с полями даты он также работает правильно, но когда я искал только поле имени сотрудника, это не работает, возможно, когда я повторяю свой запрос. но не показал результат.

$query2 = "SELECT d.*, e.EMP_FIRST_NAME, a.ATTENDANCE_TYPE_TITLE 
      FROM daily_sheet d 
      INNER JOIN attendance_type a ON a.ATTENDANCE_TYPE_ID = d.ATTENDANCE_TYPE_ID 
      INNER JOIN ids_employ e ON e.EMP_ID = d.EMP_ID 

     WHERE 1 =1"; 
      if($ids_emp != '') 
       { 
       $query2 .= " AND e.EMP_ID = '$ids_emp'"; 
       }  
       if($date1 != '' && $date2 != '') 
       { 
       $query2 .= " AND d.DATE >= '$date1' AND d.DATE <= '$date2'"; 
       } 
$result2 = mysqli_query($conn,$query2) or die("Selection Failed : " . mysqli_error()); 
$num2 = mysqli_num_rows($result2); 
while($row2 = mysqli_fetch_assoc($result2)) 
{ 
    $id = $row2["DAILY_SHEET_ID"]; 
    $emp_name = $row2["EMP_FIRST_NAME"]; 
    $username = $row2["USER_NAME"]; 
    $date = $row2["DATE"]; 
    $day = $row2["DAY"]; 
    $time_in = $row2["TIME_IN"]; 
    $time_out = $row2["TIME_OUT"]; 
    $attendance = $row2["ATTENDANCE_TYPE_TITLE"]; 
?> 
+0

форматирования кода – amdixon

+0

, что тип данных 'EMP_ID'? –

+1

'где 1 = 1' является взломанным .. вы, вероятно, не хотите этого делать. Кроме того, вы можете вставить точное строковое значение 'query2' при возникновении ошибки? –

ответ

0

Выполните следующие шаги: -

1) Печать запроса.

2) копировать весь запрос.

3) открыт PHPMyAdmin

4) выберите дб

5) нажмите на SQL разделе

6) вставить запрос здесь и запустить его.

Если возникнут какие-либо ошибки, вы отследите их оттуда.

+2

Запросы должны быть в комментариях, так как это не ответ. –

+0

@Frederik: Спасибо за информацию. –

0

Попробуйте это ..

$ids_emp = ''; 
$date1 = ''; 
$date2 = ''; 

if ($ids_emp != '') { 
$ids_emp_str = "AND `ids_emp`='" . $ids_emp . "'"; 
} 
if($date1 != '' && $date2 != '') 
{ 
$str2 = " AND d.DATE >= '$date1' AND d.DATE <= '$date2'"; 
} 
$sqlsearch = "SELECT * FROM `user` WHERE 1 = 1 $ids_emp_str $str2; 

Введите ваши реальные поля и попробуйте этот путь.

+0

Зачем ПП «попробуй это»? *** Хороший ответ *** всегда будет объяснять, что было сделано, и почему это было сделано именно так, не только для OP, но и для будущих посетителей SO. –

0

это 3 valible understading только для пользователей

$ids_emp = "1"; 
$date1 = "2016/01/01"; 
$date2 = "2016/02/01"; 

$query2 = "SELECT d.*, e.EMP_FIRST_NAME, a.ATTENDANCE_TYPE_TITLE 
      FROM daily_sheet d 
      INNER JOIN attendance_type a ON a.ATTENDANCE_TYPE_ID = d.ATTENDANCE_TYPE_ID 
      INNER JOIN ids_employ e ON e.EMP_ID = d.EMP_ID WHERE d.EMP_ID = 1"; 
      if($ids_emp != '') 
       { 
      $query2 .= " AND e.EMP_ID = '$ids_emp'"; 
       }  
       if($date1 != '' && $date2 != '') 
       { 
       $query2 .= " AND d.DATE >= '$date1' AND d.DATE <= '$date2'"; 
       } 
+0

Зачем OP «попробуйте это»? *** Хороший ответ *** всегда будет объяснять, что было сделано, и почему это было сделано именно так, не только для OP, но и для будущих посетителей SO. –

Смежные вопросы