2014-12-25 3 views
-1

나는 아주 간단한 것을 얻으려고합니다. 오늘부터 내년 말까지 holidays 테이블에서 공휴일 세부 정보를 읽고 결과를 연관 배열 배열의 var_dump로 표시합니다 (요점은 일단 작동하면 나는 json_encode()이 될 수 있기를 원합니다). 테이블에 행이 있지만 내 코드는 빈 배열 array(0){}을 반환합니다. 누군가 잘못 된 것을 말할 수 있습니까? 대신 BETWEEN의 아래데이터베이스에서 빈 배열을 읽는 중

<?php 
//test file 

//Database details 
$db_host = 'localhost'; 
$db_name = 'hrmsbb'; 
$db_username = 'root'; 
$db_password = ''; 

//connect to database 
$conn = new mysqli($db_host, $db_username, $db_password, $db_name); 

if ($conn->connect_error) { 
    die("Connection error"); 
} 

//Show holidays from tomorrow upto the end of next year 
$d = new DateTime('tomorrow'); 
$date_begin = $d->format('Y-m-d'); 

$d->add(new DateInterval('P1Y')); //add difference of one year 
$y = $d->format('Y'); //get resulting year 
$date_end = "$y-12-31"; //construct date 

$query = $conn->prepare("SELECT holiday_id, name, date, value, comments FROM holidays 
     WHERE date BETWEEN ? AND ? ORDER BY date ASC"); 

$query->bind_param("ss", $date_begin, $date_end); 

$result = $query->execute(); 

if($result === false) { //query failed 
    die("Failed to query database"); 
} 

$query->bind_result($id, $name, $date, $value, $comments); 

//return results as array of objects 
$data = array(); 

while($query->fetch()) { 
    $data[] = array('id' => $id, 'name' => $name, 'date' => $date, 
       'value' => $value, 'comments' => $comments); 
} 

echo "<pre>"; 
var_dump($data); 
echo "</pre>"; 
+5

분명히 귀하의 쿼리는 아무것도 반환하지 않습니다. 즉, 쿼리가 잘못되었습니다. 콘솔이나 phpmyadmin을 통해 mysql에서 직접 해봤습니까? –

+0

@u_mulder 아, 내가 얼마나 바보인지! 표의 기존 날짜가이 범위를 벗어났습니다. : P – dotslash

답변

0

닫을 수 있도록 응답합니다. 나는 조잡했고 테이블에 실제로 쿼리와 일치 할 수있는 데이터가 없다는 것을 보지 못했습니다.

0

시도 쿼리 :

$query = $conn->prepare("SELECT holiday_id, name, date, value, comments FROM holidays 
     WHERE date > ? AND date < ? ORDER BY date ASC"); 

그런데, 난 당신이 MySQL의 테이블의 컬럼의 이름으로 '날짜'를 사용 수 있다고 생각하지 않습니다! 이것은 'date'라는 단어가 mySql의 키워드이기 때문입니다.

+0

쿼리가 결국 작동했습니다. 내가 게시했을 때 날짜 범위에 행이 없습니다. 그런데'date'를 키워드 라해도 열 이름으로 사용할 수 있습니다. – dotslash

관련 문제