[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: create table if not exists...
logic

$create_tbl = "CREATE TABLE IF NOT EXISTS table_name(
id INTEGER PRIMARY KEY,
name TEXT,
email TEXT,
msg TEXT,
datetime INTEGER,
)"
;
if(mysqli_query($create_tbl))
{
echo "Таблица только что была создана";
}
else
{
echo "Таблица с таким именем в базе данных уже существует";
}

Всегда приходит ответ "Таблица только что была создана". Хотя начиная со второго запуска скрипта надо чтоб приходило "Таблица с таким именем в базе данных уже существует".
Вообще кто то использует такую sql конструкцию, или чаще все-таки просто идет проверка через SELECT и mysqli_affected_rows ?



Спустя 7 минут, 20 секунд (18.04.2012 - 12:55) T1grOK написал(а):

$create_tbl = "CREATE TABLE table_name(
id INTEGER PRIMARY KEY,
name TEXT,
email TEXT,
msg TEXT,
datetime INTEGER,
)"
;
//В идеале когда нет ошибок в самом запросе и т.д.
mysqli_query($this->create_tbl) or die('Таблица с таким именем существует');
echo "Таблица только что была создана";

Можно еще через information_schema сделать.

Спустя 9 минут, 23 секунды (18.04.2012 - 13:04) T1grOK написал(а):
Или еще так

if(mysqli_query($create_tbl))
{
echo "Таблица только что была создана";
}
else
{
if(mysqli_errno() == 1146)
{
echo "Таблица с таким именем в базе данных уже существует";
}
}


Спустя 8 минут (18.04.2012 - 13:12) sergeiss написал(а):
Цитата (logic @ 18.04.2012 - 14:48)
Всегда приходит ответ "Таблица только что была создана".

Всё логично. Потому что эта фраза выдается в случае выполнения запроса. А запрос будет всегда успешен, т.е. без ошибок.

Спустя 4 минуты, 41 секунда (18.04.2012 - 13:17) logic написал(а):
Цитата (sergeiss @ 18.04.2012 - 11:12)
Цитата (logic @ 18.04.2012 - 14:48)
Всегда приходит ответ "Таблица только что была создана".

Всё логично. Потому что эта фраза выдается в случае выполнения запроса. А запрос будет всегда успешен, т.е. без ошибок.

вот именно это я и подозревал...ну и если это не является ошибочным запросом, то БД ошибку не вернет, а как тогда поступить, проверять через SELECT, и если вернет что то, то есть, если ошибка то нету таблицы...
спасибо

Спустя 13 минут, 47 секунд (18.04.2012 - 13:31) T1grOK написал(а):
IF NOT EXISTS убрать в запросе. Или перед созданием селектом из information_schema проверять.

Спустя 25 минут, 54 секунды (18.04.2012 - 13:57) logic написал(а):
Цитата (T1grOK @ 18.04.2012 - 11:31)
IF NOT EXISTS убрать в запросе. 

ну дурааааак ))))

Спасибо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.