Сегодня очень расстроился, пытаясь заставить это работать.
У меня есть около 20 таблиц, которые необходимо создать в начале сценария my php, если они не существуют.
Очевидным методом будет SQL-запрос CREATE IF NOT EXIST, однако яя не хочу запрашивать базу данных 20 раз просто для того, чтобы проверить, существуют они или нет, только когда я хочу их создать.
Я попытался перебрать массив таблиц, затем использовать SHOW ALL FROM database и сравнитьимена таблиц, однако, это не работает (я понятия не имею, почему).
$result=$db->query("SHOW TABLES FROM database");
$numrows=mysql_num_rows($result);
echo $numrows.' tables';
$found=null;
foreach ($table as $name => $fields) {
while ($showall=mysql_fetch_array($result)) {
if ($name==$showall[0]) {
unset($found);
}
}
if (isset($found)) {
echo 'Table '.$name.' does not exist, creating...<br />';
$db->query("CREATE TABLE ".$name." (".$fields.")");
} else {
echo 'Table '.$name.' exists<br />';
//$db->query("CREATE TABLE ".$name." (".$fields.")");
}
Это мой код до сих пор (версия 4, я считаю, после нескольких часов попыток заставить его работать).Как видите, я зацикливаюсь внутри цикла и сбрасываю переменную, если она находит совпадение.Звучит просто и ДОЛЖНО работать, но это не так.