2014-09-07 1 views
0

나는이 같은 테이블과 SQL 데이터베이스가 :PHP를 선택하고 날짜 포맷

<pre>SubmissionId | FormId | DateSubmitted  | UserIp  |</pre> 
<pre>1234   | 88  | 2014-07-25 21:47:45 | 192.168.1.5 |</pre> 
<pre>1235   | 33  | 2014-07-25 17:22:21 | 10.90.1.64 |</pre> 
<pre>1236   | 54  | 2014-07-25 09:43:12 | 192.168.1.32 |</pre> 
<pre>1237   | 89  | 2014-08-20 11:13:44 | 10.88.45.5 |</pre> 

데이터 유형은 다음과 같습니다
가이 입니다 지능
이 FormId (11) AUTO_INCREMENT입니다 SubmissionId Int (11)
날짜 제출 완료날짜 시간UserIpVARCHAR입니다 (15)

작업은 다음과 같습니다 내가 얻을 수있는 곳에서 값이 , UserIp dateSubmitted를을 FormId, 연관 배열을 가지고. (array $ data) 그리고이 값들을 사용해서 나는 SubmissionId을 찾아야 만합니다. 당신이 코드가 dateSubmitted를의 값을 얻고 시간하지 않고 날짜 만 가져 볼 그래서

$res1 = $data['FormId']; 
    $res2 = $data['DateSubmitted']; 
    $res3 = $data['UserIp']; 
    $query = "SELECT `SubmissionId` FROM `my_table1` WHERE `FormId` = '".$res1."' AND DATE(`DateSubmitted`) = DATE('".$res2."') AND `UserIp`='".$res3."'"; 
    $db->setQuery($query); 
    $res11 = $db->loadResult(); 
//Update the value in another table 
    $db->setQuery("UPDATE `my_table2` SET `FieldValue` = '".$res11."' WHERE `FieldName`='SubmissionNumber' AND `Name`='Test1'"); 
    $db->query(); 

:

그래서 나는이 같은 코드가 있습니다. 그래서 여러 동등한 날짜가 있으면 검색 결과가 잘못됩니다. datetime의 전체 값을 사용하도록 코드를 변경해야합니다. 나도 시간을 사용해야 해.

그래서 SELECT 쿼리를 제대로 작동시키는 데 사용할 함수를 모르겠습니다.

제발 도와 주실 수 있습니까?

답변

0
"`DateSubmitted` = '".$res2."'" 

또는, 당신처럼 뭔가를 할 수 (대신 두 번째 정확도 요구하는)이 약간의 회색 영역을 추가하려면 : 비록 당신의 변수를 탈출해야합니다

"`DateSubmitted` BETWEEN '".$res2."' - INTERVAL 60 SECOND AND '".$res2."' + INTERVAL 60 SECOND" 

, 돈 ' t는 SQL 주입을 원한다 :)

편집 : 자유형 텍스트 상자 인 경우 strtotime을 추가하고 ('Ymd H : i : s') 추가하여 제대로 포맷되었습니다.

so $res2 = date('Y-m-d H:i:s', strtotime($data['DateSubmitted']));