以下函數用於提取數據庫中的表。PDO在數據庫中計數表
$check = $fsdbh->query('show tables')->fetch();
它不能被計數,因爲它有一個額外的層,數據庫名稱。
的print_r():
Array ([Tables_in_dbtest] => test [0] => test)
所以我們需要讓一步到陣列中,只是計算的數據庫數量。我們將如何做到這一點。
以下函數用於提取數據庫中的表。PDO在數據庫中計數表
$check = $fsdbh->query('show tables')->fetch();
它不能被計數,因爲它有一個額外的層,數據庫名稱。
的print_r():
Array ([Tables_in_dbtest] => test [0] => test)
所以我們需要讓一步到陣列中,只是計算的數據庫數量。我們將如何做到這一點。
默認獲取樣式是PDO::FETCH_BOTH
,您需要的是PDO::FETCH_ASSOC
或PDO::FETCH_NUM
。
請參閱the fetch
documentation瞭解更多信息。
此代碼應爲你工作:
$check = $fsdbh->query('show tables')->fetch(PDO::FETCH_NUM);
你可以做的另一件事是你連接到數據庫後更改默認提取風格PDO::setAttribute到PDO::FETCH_ASSOC
。
$dbh = new PDO('...');
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
FETCH_NUM或FETCH_ASSOC都可以工作,因爲它會阻止您在結果中獲得關聯和數字索引鍵(從而使數組中的值數加倍)。 – 2012-08-14 17:50:20
mmm。工程,但似乎有另一個問題。 'show tables'只能得到一個表,在這個數據庫的服務器上有2個 – 2012-08-14 17:54:24
@RobinKnight,讓你的db用戶有權訪問或讀取這兩個表? – Marwelln 2012-08-14 17:55:12
的正確方法是做做
SELECT count(*)
FROM INFORMATION_SCHEMA
WHERE TABLE_SCHEMA='yourdbname';
這不是PDO。你可以把它變成一個PDO查詢 – 2012-08-14 18:07:39
查詢是一個查詢。 PDO只是PHP與數據庫接口的一種方法。無論您使用哪種接口,它都是隱藏的SQL。 – 2012-08-14 18:25:11
臉掌...嗯。 – 2012-08-14 22:53:37
的問題不是一個嵌套/多維數組按照你的建議。這是你在結果數組中獲得關聯鍵和數字鍵的事實。請參閱下面的Marwelln的答案,以獲得解決您的結果數組問題的良好解決方案。 – 2012-08-14 17:51:28
他的方法只產生1個表格,因爲我沒有評論它們全部。 – 2012-08-14 18:36:02
這可能是因爲當前所選數據庫中只有一個表? – 2012-08-14 19:02:12