2015-06-10 5 views
0

Просто голова. Я пишу PHP сейчас около 3 дней. У меня возникли проблемы с запросом. Когда я запускаю запрос в инструменте запроса, он находит именно то, что я ищу. Я пробовал все варианты синтаксиса, о которых я могу думать, используя LIKE (как это сейчас) и = и я не могу заставить его работать. Я уверен, что есть простой способ сделать остальную часть кода, но моя главная проблема сейчас - это запрос. Спасибо за помощь.WebMatrix PHP Query Не работает

 $Incident_D = $_POST['Incident_D']; 
     $Incident_D = strtotime($Incident_D); 
     $Incident_T = $_POST['Incident_T']; 
     $Incident_T = strtotime($Incident_T); 
     $Incident_T = ($Incident_T % 86400); 
     $Incident_DT = $Incident_D + $Incident_T; 
     $sql = "SELECT dept.Department From department dept inner join near_miss NM on dept.Dept_Index = NM.Dept_Index Where NM.Incident_DT LIKE '%" . $Incident_DT . "%'"; 
     $result = mysqli_query($conn, $sql); 
     if (mysqli_num_rows($result) > 0) { 
      // output data of each row 
      while($row = mysqli_fetch_assoc($result)) { 
       $result1 = $row['Department']; 
      } 
      } else { 
       $result1 = "No Response"; 
      } 

     $result = $result1; 

Если я вручную ввожу значение для $ Incident_DT, оно может его найти. Вот почему я думаю, что проблема заключается в том, как значение хранится в $ Incident_DT. также когда я повторяю значение переменной и вставляю ее в инструмент запроса, который он работает.

+0

** ПРЕДУПРЕЖДЕНИЕ ** При использовании 'mysqli' вы должны использовать параметризованные запросы и ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ используйте ** интерполирование строк, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). ** НИКОГДА ** не вводите данные '$ _POST' непосредственно в запрос. – tadman

+0

Какой тип данных является вашим столбцом 'Incident_DT'? вы всегда должны использовать типы даты и времени для этих данных, см. https://dev.mysql.com/doc/refman/5.0/en/datetime.html – andrew

+0

Incident_DT - целое число –

ответ

0
$sql = "SELECT dept.Department From `department` dept inner join near_miss NM on dept.Dept_Index = NM.Dept_Index Where NM.Incident_DT LIKE '%" . $Incident_DT . "%'"; 

Обратный тик необходим для PHP на TABLENAME.

+0

Это не сработало. В другом разделе я использую: «SELECT dept.Department От отдела отдела внутреннего соединения near_miss NM на dept.dept_index = NM.Dept_index Где NM.NM_Index =". $ Rpt_Num; и он работает очень хорошо. –

+0

Это не * необходимо *. –

0

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

объявить новую переменную со значением:

$filter_var="%".$Incident_DT."%"; 

Тогда:

 $sql = "SELECT dept.Department From department dept inner join near_miss NM 
on dept.Dept_Index = NM.Dept_Index Where NM.Incident_DT LIKE '$filter_var'"; 
+0

Я уверен, что это глупый вопрос, но что они делают в этой ситуации? –

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