Я использую этот код, чтобы попытаться захватить имя таблицы и сохранить ее в переменной.
<?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 и вставить имя таблицы в переменную, которую я могу использовать в указанном коде? Как я могу это сделать?
$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;
}
SHOW TABLES
возвращает таблицу с одним именем таблицы в строке. Вы должны использовать mysql_fetch_array
столько раз, сколько строк в таблице, потому что он извлекает только одну строку таблицы...
Подумайте о чем-то вроде этого:
while($row = mysql_fetch_array($result)) {
$table_name = $row[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;
}
echo "$table_name\n";