2015-04-30 39 views
0

我正在學習PHP並讓它與我們的SQL Server 2008R2數據庫交談。我想運行一個查詢,有2個日期參數需要通過。我知道我可以編寫日期參數到SQL中,但我想看看我在做什麼錯誤的佔位符方法如下:帶SQLSRV的PHP日期參數

$serverName = "server"; 

$connectionInfo = array("Database"=>"db", "UID"=>"user", "PWD"=>"pwd"); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 

if($conn) { 
    echo "Connection established.<br />"; 
}else{ 
    echo "Connection could not be established.<br />"; 
    die(print_r(sqlsrv_errors(), true)); 
} 

$startDate = strtotime("2015-04-30"); 
$endDate = strtotime("2015-05-01"); 

$sql = "SELECT * FROM history 
     WHERE (ts >= ? and ts < ?) 
     ORDER BY ts"; 
$params = array($startDate, $endDate); 

$stmt = sqlsrv_query($conn, $sql, $params); 
if ($stmt == false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
    echo "<p>" . $row['vesselname'] . "</p>"; 
} 

sqlsrv_free_stmt($stmt); 
sqlsrv_close($conn); 

這將返回錯誤「算術溢出錯誤將表達式轉換爲數據類型日期時間」。 ts是一個日期時間字段。

回答

0

沒關係。我發現我不需要strtotime,只需要傳遞日期字符串。