PHP не виноват. Тут больше вопрос к СУБД. При создании-удалении процедуры происходит какой-то сбой на стороне БД.
Можете попробовать убрать создание процедуры, оставить только создание столбцов:
<?php
public function createQuery($array, $table)
{
$query = 'use database_name; ';
foreach($array as $key => $value){
$query.= "
IF NOT EXISTS (
SELECT *
FROM information_schema.COLUMNS
WHERE COLUMN_NAME = '".$key."'
AND TABLE_NAME = '".$table."'
AND TABLE_SCHEMA = DATABASE()
) THEN
ALTER TABLE `".$table."`
ADD COLUMN `" .$key."` TEXT NULL DEFAULT null;
END IF;";
}
return $query;
}
?>
Но результат будет зависеть от возможностей вашей СУБД.