2017-01-30 90 views
0

我有兩個MySQL列表的列數。下面的表格結構中給出,一個PHP函數來處理不同的MySQLi select語句

1.pictures
postedON
字幕
imageName
thumbName
imageLocation
thumbLocation

2.Videos
postedOn
類別
鏈接

我正在使用以下PHP函數從數據庫中使用select命令獲取數據。

function select($table){ 
    if($this->db_connection){ 
     $query = 'SELECT * FROM '. $table; 

     $result = mysqli_query($this->db_connection,$query) or die($this->db_connection->error); 
     //print_r($result); 
     //echo "Affected rows: " . mysqli_affected_rows($this->db_connection); 
     //var_dump($result); 
     echo "<table>"; 
     echo "<tr>"; 
     echo "<th>Date Posted</th>"; 
     echo "<th>Category</th>"; 
     echo "<th>Link</th>"; 
     echo "</tr>"; 
     while($row = $result->fetch_assoc()){ 
      echo "<tr>"; 
      echo "<td>" . $row['postedOn'] . "</td>"; 
      echo "<td>".$row['category']. "</td>"; 
      echo "<td><a href=".$row['link'] .">" . $row['link'] . "</a></td>"; 
      echo "</tr>"; 
     } 

      echo "</table>"; 
    }else{ 
     echo "db_connection is = " . $this->db_connection; 
    } 
} 

}

使用此功能,你可以看到的問題,它只能服務於只有一個表,不是動態的。有人可以請解釋一下,只使用一個PHP函數來動態從不同列數的表中獲取數據的方式嗎?由於

回答

0

使用try mysqli_fetch_fields()

<?php 
function select($table){ 
    if($this->db_connection){ 
    $query = 'SELECT * FROM '. $table; 

    $result = mysqli_query($this->db_connection,$query) or die($this->db_connection->error); 
    $fieldinfo = mysqli_fetch_fields($result); 
    echo "<table>"; 
    echo "<tr>"; 
    foreach ($fieldinfo as $val) 
    { 
     echo "<th>".$val->name."</th>"; 
    } 
    echo "</tr>"; 
    while($row = $result->fetch_assoc()){ 
     echo "<tr>"; 
     foreach ($fieldinfo as $val) 
     { 
      echo "<td>" . $row[$val->orgname] . "</td>"; 
     }    
     echo "</tr>"; 
    } 

    echo "</table>"; 
    }else{ 
    echo "db_connection is = " . $this->db_connection; 
    } 
} 
+0

鏈接和圖片怎麼樣? –

0

這可能是很難解釋給你的方法是基於錯誤的前提,但我會努力。

首先,你必須明白像SELECT * FROM table這樣的查詢有一個很小的用處,幾乎沒有。大多數時候你總是有一些WHERE或至少LIMIT子句。所以,這樣的功能根本沒有用處。

接下來,您必須明白,數據庫交互不應與HTML等任何輸出內容混合。

鑑於上述兩個前提,您的函數應接受填充限定查詢作爲參數,並返回一個包含數據的數組。

對於哪個數組,您可以編寫一個輔助函數來以HTML表格的形式顯示其內容。

但是,這樣的廣義輸出函數也沒什麼用處,因爲從你自己的例子中可以看出,不同的字段需要不同的格式。所以最好每次手寫輸出。

+0

感謝您的回答。我只是想在一個目錄中顯示所有可用的圖片,這就是爲什麼我沒有使用任何WHERE子句。我會考慮將HTML格式轉換爲單獨的功能。但這並沒有回答我的問題。有什麼其他方式可以做到嗎?謝謝 –

+0

就像我說的,你的問題應該返回一個包含數據的數組。有什麼不清楚的呢? –

+0

明白了。謝謝。 –