2012-11-23 52 views
0

我正在爲我創建的腳本創建安裝文件,並且還會提供輸入數據庫詳細信息的字段。無論如何,在將這些數據庫詳細信息存儲在config.php文件中之前,我想看看它們是否工作。查看提供的細節是否有效的最佳方法是什麼?我想運行一個虛擬查詢,如果它成功,然後將詳細信息存儲在一個文件中。我不知道最好的查詢是什麼?整個事情我正在使用PDO。所以,我基本上需要檢查數據庫連接是否成功才能繼續。虛擬SQL查詢

您能告訴我您的想法如何驗證用戶輸入是否一切正常?我的虛擬查詢想法是處理這個問題的好方法嗎?如果是,我應該運行什麼查詢?如果不是,你有什麼建議?

謝謝。

+1

見說明書,實施例#2處理連接錯誤:http://php.net/manual /en/pdo.connections.php ...啊,但我想你也想檢查權限,對吧? –

+0

@WesleyMurch是的,權限也需要檢查。 – Aborted

回答

0

首先,檢查PHP連接數據庫正確(返回值,MySQL的錯誤)。然後你可以使用類似SHOW VARIABLES LIKE "%version%"的東西來確定數據庫引擎版本,所以所有的函數和方法都可以按照預期工作。這樣您還可以通知您的用戶,他們的數據庫版本已經過時,可以與您的軟件一起使用。

EDIT

而且,SHOW GRANTS FOR 'user'@'host'查詢是一個好主意,以檢查權限連接的用戶

2

如果您使用的是sql server,像「select 1」這樣的工作就可以完成。我猜很多其他的數據庫引擎也會支持這個查詢。

+0

「SELECT」的缺點是無法測試權限。例如創建表格。 – Eric

0

那麼,如果連接函數返回期望值而不產生任何錯誤/異常,則可以假定連接成功。除此之外...

SHOW TABLES FROM $database;

應該證明他們有至少基本權限的數據庫,但不會說明,如果他們可以創建表和插入數據。

1

要做的最好的事情是發出一系列查詢/命令來測試每個你需要的東西。

  1. 可以打開連接
  2. 數據庫是存在的/可創建
  3. 用戶可以查看數據/可以構建數據 等。

然後作爲安裝的一部分,你可以告訴用戶如果有什麼不對,並直接指出他們解決的問題。你應該在安裝的早期做到這一點,這樣你就不必回滾太多。

想想安裝體驗。安裝程序時你想要什麼。你想說它只是說

"Error. Can't connect", 
or 
"Error: Cannot connect to DATABASEX the SERVERY with the USERID_W", 
or even better 
"Error: Can connect to the DATABASEX the SERVERY with the USERID_W, but table X is missing, have you completed step ABC first?" 

儘可能多的工作,你可以爲用戶。