[英]Run a database dump (Restore) from an sql file in PHP + PostgreSql
我正在嘗試創建一個系統,用戶可以在其中創建數據庫並從 UI 填充它,這與大多數 CMS 的安裝非常相似。 我可以以編程方式創建數據庫,但創建和填充表是我面臨的挑戰。
我有一個包含這些表和數據的模板 sql 文件,它偶爾會通過轉儲更新,這就是我正在做的:
try {
$dbTablesAndData = file_get_contents('path/to/template.sql');
$db = setDBConnection($clientDb);
$query = $db->prepare("$dbTablesAndData");
$query->execute( array() );
} catch (PDOException $e) {
$app->response()->setStatus(401);
$app->response()->headers->set('Content-Type', 'application/json');
echo json_encode(array('response' => 'error', 'data' => $e->getMessage() ));
}
運行時出現錯誤: cannot insert multiple commands into prepared statement
所以我的問題是,有沒有辦法成功執行這個文件中的所有查詢?
我從這個問題中讀到了一種相關的解決方案,但它對我不起作用,因為它建議用分號拆分語句:
$statements = explode(';', $script);
foreach($statements as $sql){
if($sql === '') { continue; }
$query = $pdo->prepare($sql);
$query->execute();
if($query->errorCode() !== '00000'){ die("ERROR: SQL error code: ".$query->errorCode()."\n"); }
}
但是我的 sql 文件包含分號不應該像函數創建中的變量聲明等那樣拆分的情況。有什么辦法可以解決這個問題?
找到了解決方案。 顯然,只有 PDO 才能運行多個命令。 所以像pg_query()
這樣的東西就足夠了,而不是prepare()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.