2013-11-25 78 views
0

您好,我知道這可能是非常簡單和谷歌搜索小時我回來兩手空空後,我試圖將表格清單查詢存儲到一個數組,其中我可以檢查是否從另一個數組的值是在產生LIST TABLES查詢。LIST TABLES in_array

$SQL = new DB; 

$tables = array(
"Product_Cache", 
"Product_Cat", 
"Product_Details", 
"Product_Images", 
"Site_Content", 
"UserDetails", 
"User_Products", 
"User_Type", 
"Users" 
    ); 

$result = $SQL->doQuery("SHOW TABLES IN sellmygadgets"); 
$row = $result->fetch_assoc(); 

foreach ($tables as $table){ 
echo "Table " . $table . " Contains this many rows : " . $SQL->numRows(select_all($table)) . "<br>"; 
    //if(in_array($table, $row, TRUE) { 

    //} 
} 

的幫助感激感謝安迪

+0

'FETCH_ASSOC()'只是返回一行結果,你需要調用它在一個循環中獲得的所有行。 – Barmar

+0

是否有另一個sqli函數來取出所有行? –

+0

http://php.net/manual/en/mysqli-result.fetch-all.php。您必須使用MYSQLND驅動程序。 – Barmar

回答

0

你需要調用fetch_row()在循環中得到的結果的所有行。

$result = $SQL->doQuery("SHOW TABLES IN sellmygadgets"); 
while ($row = $result->fetch_row()) { 
    $table = $row[0]; 
    if (in_array($table, $tables)) { 
     ... 
    } 
} 
+0

感謝您的幫助,不得不改變一下代碼,以相反的方式獲取in_array –

0
$result = $SQL->doQuery("SHOW TABLES IN sellmygadgets"); 
while ($row = $result->fetch_row()) { 
    $rows[$i] = $row[0]; 
    $i++; 
} 

print_r ($rows); 

foreach ($tables as $table){  
echo "<br> Table " . $table . " Contains this many rows : " . $SQL->numRows(select_all($table)) . "<br>"; 

    if (in_array($table, $rows, TRUE)) { 
     echo $table . " deos exist <br>"; 
    } else { 
     echo $table . " does not exist <br>"; 
    } 

}