У меня один и тот же запрос работает через консоль и при попытке воспроизвести его через php - не работает выдает ошибку что есть синтаксическая ошибка в первой строке:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER //
DROP PROCEDURE IF EXISTS addColumn //
CREATE PROCEDURE addColumn(' at line 1
Уже экранировать пытался через mysqli_real_escape_string - результата 0, возможно проблема может быть в чем-то другом?
Строится запрос таким образом:
public function createQuery($array, $table){
$query ="
DELIMITER //
DROP PROCEDURE IF EXISTS addColumn //
CREATE PROCEDURE addColumn()
BEGIN";
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;";
}
$query .= "
END//
DELIMITER ;
CALL addColumn;
DROP PROCEDURE addColumn;";
return $query;
}
Отправляется так:
public static function uploadAny($query){
$connect = self::createConnection();
if ($connect !== false)
{
$result = mysqli_query(
$connect, $query);
echo mysqli_error($connect);
}
}