Странный вывод PHP

0

Я использую этот код, чтобы попытаться захватить имя таблицы и сохранить ее в переменной.

<?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", если я изменяю индекс массива, который я знаю имена arent-таблиц в db и two, то, что я хочу сделать, это запустить некоторый код для каждой таблицы в db и вставить имя таблицы в переменную, которую я могу использовать в указанном коде? Как я могу это сделать?

Теги:
for-loop

3 ответа

3
Лучший ответ
$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;
}
  • 0
    Я бы порекомендовал echo "$table_name\n";
  • 0
    спасибо, это понятно! Любая идея, почему это будет только распечатать две из 3 таблиц, начиная со второй и игнорируя первую?
Показать ещё 5 комментариев
1

SHOW TABLES возвращает таблицу с одним именем таблицы в строке. Вы должны использовать mysql_fetch_array столько раз, сколько строк в таблице, потому что он извлекает только одну строку таблицы...

Подумайте о чем-то вроде этого:

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

$sql = "SHOW TABLES"; $ 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;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню