Вы не проверяете, нашел ли запрос какие-либо строки. mysqli_real_query()
успешен, если не получено сообщение об ошибке, но это не означает, что запрос соответствует чему-либо. Вам нужно получить результат запроса.
Кроме того, вы просто проверяете, существует ли таблица, а не существует ли этот столбец в таблице.
continue
пропускает все остальныеиз тела петли. Вы должны использовать else
для выполнения второго блока, когда столбец не найден.
Используйте mysqli_query()
, если хотите использовать результат. В противном случае вам нужно сначала позвонить mysqli_use_result()
и mysqli_store_result()
;см. разницу между mysqli_query и mysqli_real_query
foreach($columns as $column)
{
// Check if column exists
$sql = "SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = '$database' AND TABLE_NAME = '$strTable' AND COLUMN_NAME = '$column'";
$result = mysqli_query($link, $sql);
if(mysqli_num_rows($result) > 0)
{
echo 'Column '.$column.' already exists! <br>';
} else {
$sql = "alter table '$strTable' add column '$column' varchar (30)";
if(mysqli_real_query($link, $sql))
{
echo 'Column '.$column.' was created! <br>';
}
}
$cols .= $column.',';
}