2012-12-17 85 views
2

有了這個PHP代碼:odbc_execute失敗了,那麼說,「無法取得錯誤消息」

$sql = "SELECT * FROM users WHERE name = ?"; 
$params = array('admin'); 
$result = odbc_prepare($link, $sql); 
if (!$result) { 
    die(odbc_errormsg()); 
} 
else { 
    if (!odbc_execute($result, $parameters)) { 
    die(odbc_errormsg()); 
    } 
} 

我得到這個:

Warning: odbc_execute() [function.odbc-execute]: SQL error: Failed to fetch error message, SQL state HY000 in SQLExecute in [...] 

但是,如果我這樣做:

$sql = "SELECT * FROM users WHERE name = 'admin'"; 
$params = array(); 
$result = odbc_prepare($link, $sql); 
if (!$result) { 
    die(odbc_errormsg()); 
} 
else { 
    if (!odbc_execute($result, $parameters)) { 
    die(odbc_errormsg()); 
    } 
} 

我得到了預期的結果。會是什麼呢?

我的代碼是Ubuntu的服務器上運行,使用了unixODBC和freetds的,連接到MSSQL Server 2008的

商祺!

+0

我發現它似乎FreeTDS不支持「參數化查詢」(我發現它是不可理解的):http://freetds.schemamania.org/faq.html#What.features.are.missing –

回答

1

而不是使用odbc_ *函數爲什麼不使用PDO?它應該在內部處理參數化查詢,並將SQL語句傳遞給驅動程序(本例中爲FreeTDS)。

+0

這就是我所做的最後,謝謝! –

相關問題