SQL在表中显示数据而未指定列名

时间:2019-03-04 12:01:50

标签: php mysql sql pdo

所以我有这段代码:

 <?php 
 ini_set('display_errors', 1);
 ini_set('display_startup_errors', 1);
 error_reporting(E_ALL);

 include "../includes/db_conn.php";

 $data = $_POST['tabledb'];

 $sfm = $dbm->prepare('SELECT * FROM '.$data.'');
 $sfm->execute();
 $all = $sfm->fetchAll();
 ?>
 <!DOCTYPE html>
 <html>
 <body>
 <?php 
  foreach ($all as $row)
  {
  echo "<option value=\"info\">" . $row[0] . "</option>";
  }
  ?>
  </body>
  </html>

如果具有下拉菜单,则可以选择一个小上下文,如果可以选择该表是通过ajax调用发送到此页面的,则可以从数据库中选择行。这就是为什么我有

   $data = $_POST['tabledb'];

在我的代码中。现在,我想显示表的内容,但是每个表都有不同数量的列和列名称。如何在不指定列名的情况下显示表的内容?请帮忙。

编辑

我尝试过的方法是,尝试将其设置为for循环,但是没有用。

编辑2

我还不够清楚,我试图获得与print_r相同的结果,但带有回显。

4 个答案:

答案 0 :(得分:3)

如果使用fetchAll函数,它将返回索引和关联数组的所有数据通知。

如果只想获取具有列名的数据,则需要使用如下所示:

$all = $sfm->fetchAll(\PDO::FETCH_ASSOC);

答案 1 :(得分:1)

您可以使用implode将每一行的所有元素组合为一个字符串:

foreach ($all as $row)
  {
      echo ‘<option value="info">’ . implode(‘|’, $row) . ‘</option>‘;
  }

或者您可以使用嵌套foreach

答案 2 :(得分:0)

如果您只想列出每个表中的列,请尝试以下操作:

foreach($row[0] as $column => $value){
    echo "<option value=\"info\">" . $column . "</option>";
}

这是假设每个表都有数据。

答案 3 :(得分:0)

我认为执行此操作的一种简单方法是:

$columns = array_keys($result[0]);//this will give you an array of all the columns
    foreach($columns as $col) {
      echo <td>col</td>
     }

然后执行值

foreach($result as $row) {
      echo <td>row['value1']</td>
      echo <td>row['value2']</td>
     }//or do another loop in here to through the whole array

然后您可以以表格格式显示它,使其与数据库中的内容匹配

对于您的下拉菜单,您可以重复使用columns数组

$columns = array_keys($result[0]);//this will give you an array of all the columns
foreach($columns as $col) {
  echo <option value = '.$col.'>col</option>
 }