今天我需要一些關于 php 腳本的幫助,但它不再起作用了。
我必須設定一個備份服務器,其中一個簡單的時間表與 web 界面一起作業,連接到 odbc 資料源(Access 2007 資料庫) 一切在原始服務器上運行良好,但現在硬體即將更改。
在兩臺服務器上,出于兼容性原因,PHP 版本 5.4.9 都在運行。(本地網路,所以舊的 php 版本沒有風險)
從資料源讀取效果很好,但我無法寫入資料源。在資料源環境中是否有我沒有找到的只讀標志?我不知道如何克服這個問題。
我可以按照代碼執行“INSERT INTO”命令,沒有任何錯誤。
$result = odbc_exec($con,"INSERT INTO Zeitkarten (BeginnT?tigkeit,EndeT?tigkeit,Mitarbeiter,Projekt,ArbeitscodeNr,datum,Pause,AnzahlUeber,FZhin,FZrueck,Anmerkung)
VALUES (#".$_POST['kommen']."#,#".$_POST['gehen']."#,$benutzer,".$_POST['projekt'].",".$_POST['adt'].",#".$_POST['heute']."#,".str_Replace(",",".",$_POST['pause']).",".str_Replace(",",".",$_POST['ama']).",".str_Replace(",",".",$_POST['fzhin']).",".str_Replace(",",".",$_POST['fzrueck']).",'".$_POST['anmerkung']."')");
echo $result;
}
這通常應該回顯任何結果(例如,在我得到的原始服務器上:Resource id #136)。在這里我什么也得不到。
任何人都可以幫我搜索問題嗎?
uj5u.com熱心網友回復:
雖然您的問題涉及對資料源檔案的只讀權限,但請考慮未來的兩個最佳實踐:
引數化以促進代碼安全,尤其是
$POST變數以及可讀性和可維護性,而無需凌亂的變數連接或引號標點符號。引數在支持odbc利用圖書館odbc_prepare。錯誤處理
try/catch用于根據此答案提供更多資訊錯誤或例外。
下面使用 MS Access 的CDate(),避免需要#用 PHP 的包圍和轉換數字型別的引數floatval。根據需要調整未經測驗的代碼。
// ENSURE ERRORS RAISE AS EXCEPTIONS
set_error_handler(
function($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
);
// PREPARED STATEMENT WITH ? PLACEHOLDERS
$sql = "INSERT INTO Zeitkarten
(BeginnT?tigkeit, EndeT?tigkeit, Mitarbeiter, Projekt, ArbeitscodeNr,
datum, [Pause], AnzahlUeber, FZhin, FZrueck, Anmerkung)
VALUES (CDate(?), CDate(?), ?, ?, ?, CDate(?), ?, ?, ?, ?, ?)";
try {
// BIND PARAMS AND EXECUTE
$stmt = odbc_prepare($con, $sql);
$result = odbc_execute(
$stmt,
array(
$_POST['kommen'],
$_POST['gehen'],
$benutzer,
$_POST['projekt'],
$_POST['adt'],
$_POST['heute'],
floatval(str_replace(",", ".", $_POST['pause'])),
floatval(str_replace(",", ".", $_POST['ama'])),
floatval(str_replace(",", ".", $_POST['fzhin'])),
floatval(str_replace(",", ".", $_POST['fzrueck'])),
$_POST['anmerkung']
)
);
echo $result;
} catch (Exception $e) {
// ECHO EXCEPTION MESSAGE
echo $e->getMessage();
}
uj5u.com熱心網友回復:
好吧,這很簡單……
存盤資料庫的檔案夾僅對標準用戶可讀。現在用戶對該檔案夾擁有 wright-rights 并且 odbc-connection 可以寫入資料庫。
感謝克里斯·哈斯
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/403268.html
標籤:
上一篇:為什么我在ggplot中的條形圖在ggbarplot中看起來很奇怪?
下一篇:排序字母數字陣列訪問-VBA
