【问题标题】:Strange PHP output奇怪的 PHP 输出
【发布时间】:2023-03-10 00:22:01
【问题描述】:

我正在使用此代码尝试获取表名并将其存储在变量中。

<?php
connectDB();
$sql = "SHOW TABLES";
$result = mysql_query($sql);
$tables = mysql_fetch_array($result);
    foreach ($tables as $table) {
        $table_name = $table[0];
        echo $table_name;
    }
closeConn();
?>

一方面,如果我更改我知道数据库中没有表名的数组索引,它会输出“aa”和“bb”,第二,我想做的是为数据库中的每个表运行一些代码并插入将表名转换为我可以在所述代码中使用的变量?我该怎么做?

【问题讨论】:

    标签: php mysql for-loop


    【解决方案1】:
    $tables = mysql_fetch_array($result);
    

    mysql_fetch_array 获取一行,而不是整个集合。这意味着当您执行$table[0] 时,您实际上是在处理行中每个字段的字符串值。

    您应该将 mysql_fetch_array 放在循环中:

    while ($table = mysql_fetch_array($result)) {
        $table_name = $table[0];
        echo $table_name;
    }
    

    【讨论】:

    • 我推荐echo "$table_name\n";
    • 谢谢,明白了!知道为什么这只会打印出从第二个开始并忽略第一个的 3 个表中的两个吗?
    • @StasM 我认为这不是$table_name 的最终目的,但是是的,这可能是一个很好的建议。
    • @benhowdle89 我的代码?不,不知道。如果您在 MySQL 控制台/phpMyAdmin 中进行查询会发生什么?
    • @benhowdle89 确保您已删除之前对mysql_fetch_array 的调用。
    【解决方案2】:

    SHOW TABLES 返回一个表,每行有一个表名。您应该使用mysql_fetch_array 的次数与表中的行数一样多,因为它只检索表的一行...

    想想这样的事情:

    while($row = mysql_fetch_array($result)) {
        $table_name = $row[0];
        // ...
    }
    

    【讨论】:

      【解决方案3】:

      $sql = "显示表格"; $result = mysql_query($sql);

      while ($row = mysql_fetch_array($result, MYSQL_BOTH))
      {
          $tables[] = $row[0];
      }
      
      // To Display
      foreach ($tables as $table) {
      
          $table_name = $table;
          echo $table_name;
      }
      

      【讨论】:

        猜你喜欢
        • 2019-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-29
        • 1970-01-01
        相关资源
        最近更新 更多