2016-10-02 1 views
1

나는 그래서 시작과 끝이mysql에서 날짜를 쿼리하는 중 아무 것도 반환하지 않습니까?

타임 스탬프 inbetween 내가 제공하는 타임 스탬프가있는 데이터베이스 이름을 반환하려고이 기능을 사용하고 있으므로

id = 1 
tablename = 1 (bigint) 
timestampstart = 2011-08-06 13:54:17 (timestamp) 
timestampend = 2011-08-06 14:54:17 (timestamp) 

같은 값이 데이터베이스 테이블을 조회하는 것을 시도하고있다

function getDatabase($timestamp){ 
    $link = new MySQLi($host, $root, $password, $database); 
    $name = ''; 

$result = $link->query("SELECT `tablename` FROM `datas` WHERE `timestampstart` =< '$timestamp' AND `timestampend` >= '$timestamp'"); 
if($link->error){ 
    return $link->error; 
} 
if($result->num_rows > 0){ 
    while($row = $result->fetch_assoc()){ 
     $name .= $row['tablename']; 
    } 

    return $name; 
}else{ 
    return 'no table'; 
} 
} 

그래서이

echo getDatabase('2011-08-06 13:54:50'); 

과 같이 호출 내가 얻는 모두는 '더 테이블'다시 이 아니라 하나 개의 행이 없습니다 맨위로 테이블의 구조를 정의한 곳에서 도움을 주시면 감사하겠습니다.

+0

'SELECT' 쿼리를 참조하십시오.'= <'는'<='이어야합니다. –

+0

아직 테이블이 없습니다. – JRowan

+0

db에 데이터 테이블이 있습니까? – yafater

답변

1

귀하의 SELECT 쿼리에서 UNIX_TIMESTAMP() 기능을 사용하여 타임 스탬프를 비교하십시오. 귀하의 질의는 다음과 같이해야합니다 :

SELECT `tablename` 
FROM `datas` 
WHERE UNIX_TIMESTAMP(timestampstart) <= UNIX_TIMESTAMP('$timestamp') 
AND UNIX_TIMESTAMP(timestampend) >= UNIX_TIMESTAMP('$timestamp') 

또는 (짧은 쿼리)과는 별도로

SELECT `tablename` 
FROM `datas` 
WHERE UNIX_TIMESTAMP('$timestamp') BETWEEN UNIX_TIMESTAMP(timestampstart) AND UNIX_TIMESTAMP(timestampend) 

, 나는 또한 $host, $root, $password$database가에서 사용할 수없는 범위 문제 때문에 볼 수 있습니다 함수의 범위. global을 사용하거나 getDatabase() 함수의 데이터베이스 자격 증명을 함수 매개 변수로 전달하십시오.

+0

변수에 global 키워드를 사용했는데 효과적이었습니다. 아직 PHP를 처음 사용하기 전에는 들어 본 적이 없으므로 감사합니다. – JRowan

+0

@JRowan Glad 내가 도울 수 있습니다. * 해피 코딩! : -) * –

관련 문제