Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Можно ли с помощью php создать базу/таблицу которой еще нет?
 
 автор: Zebra   (20.09.2004 в 00:54)   письмо автору
 
 

Можно ли с помощью php создать базу/таблицу которой еще нет?
Или же можно только работать с уже созданными базами/таблицами?
Я так думаю соедениться сервером MySQL а потом отправить SQL запрос но что то не как не получается.
Уже и код создания с phpmyadmin брал все равно что то глухо :(
я походу где то косячу .
Премер если можно если сие возможно осуществить.

   
 
 автор: J.Lex   (20.09.2004 в 01:33)   письмо автору
 
   для: Zebra   (20.09.2004 в 00:54)
 

вот те пример :



<?php
$dbhost 
"твой сервер";
$dbuser "твойлогин";
$dbpass "твой пароль";
$db "твоя база данных";
---------------------------------------
function 
errormsg($msg)
{
printf("<h4><font color=\"#990000\">%s</font></h4>\n",$msg);
}

function 
connect()
{
global 
$dbhost,$dbuser,$dbpass,$db;
if(!(
$link mysql_pconnect($dbhost,$dbuser,$dbpass)))
{
errormsg(sprintf("Не могу соединиться с %s, с логин : %s и пароль : %s",$dbhost,$dbuser,$dbpass));
exit();

if(!(
$connect mysql_select_db($db,$link)))
{
errormsg(sprintf("Не могу выбрать базу данных: %s",$db));
errormsg(sprintf("Ошибка: %d %s",mysql_errno($link),mysql_error($link)));
exit();
}
}
function 
result($string)
{
global 
$result;
if(!(
$result mysql_query($string)))
{
errormsg(sprintf("Ошибка: %s",$string));
errormsg(sprintf("Ошибка: %d %s",mysql_errno(),mysql_error()));
exit();
}
}
connect();
$create "CREATE TABLE test (
  test1 varchar(100) NOT NULL default '0',
  test2 varchar(100) NOT NULL default '',
  test3 varchar(100) NOT NULL default '',
  test4 varchar(100) NOT NULL default '',
  test5 varchar(100) NOT NULL default ''
) TYPE=MyISAM; "
;
result($create);

?>

   
 
 автор: Zebra   (20.09.2004 в 01:49)   письмо автору
 
   для: J.Lex   (20.09.2004 в 01:33)
 

Не могу выбрать базу данных: cou
Ошибка: 1049 Unknown database 'cou'

   
 
 автор: J.Lex   (20.09.2004 в 01:56)   письмо автору
 
   для: J.Lex   (20.09.2004 в 01:33)
 

<?php


$dbhost 
"твой сервер"
$dbuser "твойлогин"
$dbpass "твой пароль"
$db "твоя база данных"
--------------------------------------- 
function 
errormsg($msg

printf("<h4><font color=\"#990000\">%s</font></h4>\n",$msg); 


function 
connect() 

global 
$dbhost,$dbuser,$dbpass,$db
if(!(
$link mysql_pconnect($dbhost,$dbuser,$dbpass))) 
{
errormsg(sprintf("Не могу соединиться с %s, с логин : %s и пароль : %s",$dbhost,$dbuser,$dbpass)); 
exit(); 

if(!(
$connect mysql_select_db($db,$link))) 
{
errormsg(sprintf("Не могу выбрать базу данных: %s",$db)); 
errormsg(sprintf("Ошибка: %d %s",mysql_errno($link),mysql_error($link))); 
exit(); 


function 
result($string

global 
$result
if(!(
$result mysql_query($string))) 

errormsg(sprintf("Ошибка: %s",$string)); 
errormsg(sprintf("Ошибка: %d %s",mysql_errno(),mysql_error())); 
exit(); 


connect(); 
// создание базыданных
$createdb "create database 'cou'";
result($createdb);
// создание таблицы
$create "CREATE TABLE test ( 
  test1 varchar(100) NOT NULL default '0', 
  test2 varchar(100) NOT NULL default '', 
  test3 varchar(100) NOT NULL default '', 
  test4 varchar(100) NOT NULL default '', 
  test5 varchar(100) NOT NULL default '' 
) TYPE=MyISAM; "

result($create); 
?>

   
 
 автор: J.Lex   (20.09.2004 в 01:57)   письмо автору
 
   для: J.Lex   (20.09.2004 в 01:56)
 

!

   
 
 автор: Zebra   (20.09.2004 в 02:12)   письмо автору
 
   для: J.Lex   (20.09.2004 в 01:57)
 

J.Lex
ЕСли база с таким именем есть то ошибка такая
Ошибка: 1064 You have an error in your SQL syntax near ''cou'' at line 1

   
 
 автор: J.Lex   (20.09.2004 в 02:19)   письмо автору
 
   для: Zebra   (20.09.2004 в 02:12)
 

если ты сомневаешься что такая или иная базаданных существует и ты хочешь создать новую с таким же именем то
используй
mysql_drob_db($db);

а потом функцию создания базыданных
----
попробуй убрать ковычки 'cou' на cou!
и еще сорри просто мой вариант уже идет с коннектом к существующей базе данных !
а так попробуй есть граф.программы для работы с бд и создания таблиц например

   
 
 автор: J.Lex   (20.09.2004 в 02:33)   письмо автору
 
   для: J.Lex   (20.09.2004 в 02:19)
 

для создания базы данных используй эту версию если хочешь
<?php
$dbhost 
"твой сервер"
$dbuser "твойлогин"
$dbpass "твой пароль"
--------------------------------------- 
function 
errormsg($msg

printf("<h4><font color=\"#990000\">%s</font></h4>\n",$msg); 


function 
connect() 

global 
$dbhost,$dbuser,$dbpass
if(!(
$link mysql_pconnect($dbhost,$dbuser,$dbpass))) 
{
errormsg(sprintf("Не могу соединиться с %s, с логин : %s и пароль : %s",$dbhost,$dbuser,$dbpass)); 
exit(); 


function 
result($string

global 
$result
if(!(
$result mysql_query($string))) 

errormsg(sprintf("Ошибка: %s",$string)); 
errormsg(sprintf("Ошибка: %d %s",mysql_errno(),mysql_error())); 
exit(); 


connect(); 
$createdb "create database cou"
result($createdb); 

 
?>
а для создания таблиц эту

<?php
$dbhost 
"твой сервер"
$dbuser "твойлогин"
$dbpass "твой пароль"
$db "твоя база данных"
--------------------------------------- 
function 
errormsg($msg

printf("<h4><font color=\"#990000\">%s</font></h4>\n",$msg); 


function 
connect() 

global 
$dbhost,$dbuser,$dbpass,$db
if(!(
$link mysql_pconnect($dbhost,$dbuser,$dbpass))) 
{
errormsg(sprintf("Не могу соединиться с %s, с логин : %s и пароль : %s",$dbhost,$dbuser,$dbpass)); 
exit(); 

if(!(
$connect mysql_select_db($db,$link))) 
{
errormsg(sprintf("Не могу выбрать базу данных: %s",$db)); 
errormsg(sprintf("Ошибка: %d %s",mysql_errno($link),mysql_error($link))); 
exit(); 


function 
result($string

global 
$result
if(!(
$result mysql_query($string))) 

errormsg(sprintf("Ошибка: %s",$string)); 
errormsg(sprintf("Ошибка: %d %s",mysql_errno(),mysql_error())); 
exit(); 


connect(); 
// создание таблицы 
$create "CREATE TABLE test ( 
  test1 varchar(100) NOT NULL default '0', 
  test2 varchar(100) NOT NULL default '', 
  test3 varchar(100) NOT NULL default '', 
  test4 varchar(100) NOT NULL default '', 
  test5 varchar(100) NOT NULL default '' 
) TYPE=MyISAM; "

result($create); 
?>

   
 
 автор: glsv (Дизайнер)   (20.09.2004 в 01:33)   письмо автору
 
   для: Zebra   (20.09.2004 в 00:54)
 

Можно и то и другое.

>Я так думаю соедениться сервером MySQL а потом отправить SQL запрос но что то не как не получается.

Именно так. Где проверяете на локалхосте или на хостинге? Если на хостинге, то там это может быть просто запрещено. Создание таблиц редко запрещают (я не встречал), а вот создание баз данных почти везде запрещено.

>Премер если можно если сие возможно осуществить.
Так а зачем он. Если Вы код с phpmyadmin брали.

Вот я создал базу данных на локальной машине.

<?
    $dblocation 
"localhost";
    
$dbuser "root";
    
$dbpasswd "root";

  
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  if (!
$dbcnx) {
    echo( 
"<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
    exit();
  }

  
$query="CREATE DATABASE 'test'";
  
mysql_query($query);
?>


А еще есть специальная функция для создания баз данных. (по ссылке)

http://www.softtime.ru/dic/id_dic=89&id_group=2

   
 
 автор: Zebra   (20.09.2004 в 01:49)   письмо автору
 
   для: glsv (Дизайнер)   (20.09.2004 в 01:33)
 


<?php 
    $link 
mysql_pconnect("localhost""mysql_user""mysql_password"
        or die(
"Could not connect: " mysql_error()); 
    if (
mysql_create_db("my_db")) { 
        print (
"Database created successfully\n"); 
    } else { 
        
printf ("Error creating database: %s\n"mysql_error()); 
    } 
?> 


Вот этот код сработал на ура Спасибо!
Но почему код ниже неработает ?
я так тоже и пробывал не хочет (на денвере2 пробую может из-за этого?)

   
 
 автор: J.Lex   (20.09.2004 в 01:53)   письмо автору
 
   для: Zebra   (20.09.2004 в 01:49)
 

а какой пример ты рассматриваешь?
все ли у тя правильно введено?
и существует ли база данных в которой ты пытаешься создать таблицу?
и какой у тя сервер базы данных локальный или хостинг??

   
 
 автор: Zebra   (20.09.2004 в 02:06)   письмо автору
 
   для: J.Lex   (20.09.2004 в 01:53)
 

первый пример автор: J.Lex
выдал ошибку
а пример от "дизайнера"
ошибок не дает и ни что не создает
пробую все на localhost

   
 
 автор: glsv (Дизайнер)   (20.09.2004 в 02:43)   письмо автору
 
   для: Zebra   (20.09.2004 в 02:06)
 

>а пример от "дизайнера"
ошибок не дает и ни что не создает

Ну... это я для примера написал. Попробуй вот этот код.

<?
    $dblocation 
"localhost";
    
$dbuser "root";
    
$dbpasswd "";
    
$dbname "ttt";

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!
$dbcnx) {
  echo( 
"Сервер базы данных не доступен" );
  exit();
}
  
// Выбираем базу данных
  
if (! @mysql_select_db($dbname,$dbcnx) )
  {
    echo( 
"Базы данных с таким именем еще нет. Сейчас будем ее создавать." );
  }
  else
  {
   echo 
"База данных с таким именем уже существует";
   exit();
  }

 
$query="CREATE DATABASE $dbname";
 if (
mysql_query($query)) 
 { 
   echo 
"База данных создана";
 }
 else
 { 
   echo 
"Ошибка при создании базы данных";
 }
?>

   
 
 автор: Zebra   (20.09.2004 в 03:01)   письмо автору
 
   для: glsv (Дизайнер)   (20.09.2004 в 02:43)
 

Дизайнер (20.09.2004 в 02:43)
последний пример тоже на ура пошел
вопрос щас такой почему такой код работает
<?php
$a
"CREATE DATABASE testing; ";
mysql_query($a);?>

А такой нет
<?php
mysql_query
(CREATE DATABASE testing; );?>


Вроде бы по логике одно и тоже

   
 
 автор: J.Lex   (20.09.2004 в 03:04)   письмо автору
 
   для: Zebra   (20.09.2004 в 03:01)
 

а если ты исправишь
<?php 
mysql_query
(CREATE DATABASE testing; );?> 
?>

на
<?php 
mysql_query
("CREATE DATABASE testing","сюда коннект к серверу");?> 

то все заработает!:))))

   
 
 автор: Zebra   (20.09.2004 в 03:11)   письмо автору
 
   для: J.Lex   (20.09.2004 в 03:04)
 

Да заработало mysql_query("CREATE DATABASE testing" );
но ведь переменная $a уменя равнялась CREATE DATABASE testing
а не "CREATE DATABASE testing"
Вобщем суть уловил
всем спасибо!
<?php
mysql_query
("CREATE DATABASE testing","сюда коннект к серверу");?> 


сюда коннект к серверу - Это что такое?

   
 
 автор: J.Lex   (20.09.2004 в 03:19)   письмо автору
 
   для: Zebra   (20.09.2004 в 03:11)
 

ну чтобы ты создал базу данных ты должен функции сообщить что ты законнектился к серверу
типо
<?php $link mysql_connect("localhost","root","passw");
mysql_query("create database testing",$link);?>

   
 
 автор: J.Lex   (20.09.2004 в 03:23)   письмо автору
 
   для: J.Lex   (20.09.2004 в 03:19)
 

а вообще дам совет почитайка ты полный мануал по MySQL

   
 
 автор: Zebra   (20.09.2004 в 03:58)   письмо автору
 
   для: J.Lex   (20.09.2004 в 03:23)
 

этот код создает базу counter в ней таблицу provaider с полями ...

  <?php
$dblocation 
"localhost";
    
$dbuser "root";
    
$dbpasswd "";

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  if (!
$dbcnx) {
    echo( 
"<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
    exit();
  }
$a "counter";
$b "create database counter";
$c "CREATE TABLE 'provaider' (
'prov' TEXT NOT NULL ,
'gorod' TEXT NOT NULL ,
'ip1_1' INT NOT NULL ,
'ip1_2' INT NOT NULL ,
'ip1_3' INT NOT NULL ,
'ip1_4' INT NOT NULL ,
'ip2_1' INT NOT NULL ,
'ip2_2' INT NOT NULL ,
'ip2_3' INT NOT NULL ,
'ip2_4' INT NOT NULL
);"
;
mysql_query($b );
mysql_select_db($a $dbcnx);
mysql_query($c );

?>

   
 
 автор: J.Lex   (20.09.2004 в 13:53)   письмо автору
 
   для: Zebra   (20.09.2004 в 03:58)
 

убери ковычки это ошибка!

вот типо такого
$c = "CREATE TABLE provaider(
prov TEXT NOT NULL ,
gorod TEXT NOT NULL ,
ip1_1 INT NOT NULL ,
ip1_2 INT NOT NULL ,
ip1_3 INT NOT NULL ,
ip1_4 INT NOT NULL ,
ip2_1 INT NOT NULL ,
ip2_2 INT NOT NULL ,
ip2_3 INT NOT NULL ,
ip2_4 INT NOT NULL
)";

   
 
 автор: Zebra   (20.09.2004 в 23:56)   письмо автору
 
   для: J.Lex   (20.09.2004 в 13:53)
 

>убери ковычки это ошибка!
>
>вот типо такого
>$c = "CREATE TABLE provaider(
>prov TEXT NOT NULL ,
>gorod TEXT NOT NULL ,
>ip1_1 INT NOT NULL ,
>ip1_2 INT NOT NULL ,
>ip1_3 INT NOT NULL ,
>ip1_4 INT NOT NULL ,
>ip2_1 INT NOT NULL ,
>ip2_2 INT NOT NULL ,
>ip2_3 INT NOT NULL ,
>ip2_4 INT NOT NULL
>)";

Переменая равна строке она же должна заключатся в кавычки!

   
 
 автор: J.Lex   (21.09.2004 в 10:42)   письмо автору
 
   для: Zebra   (20.09.2004 в 23:56)
 

не во всех случаях!

   
 
 автор: Zebra   (22.09.2004 в 02:16)   письмо автору
 
   для: J.Lex   (21.09.2004 в 10:42)
 

Ну у меня работает именно с кавычками хотя без ковычек я еще не проверял.

   
 
 автор: Zebra   (20.09.2004 в 03:19)   письмо автору
 
   для: J.Lex   (20.09.2004 в 03:04)
 

удалил сообщение!
Читаю маны MySQL

   
 
 автор: Zebra   (20.09.2004 в 02:38)   письмо автору
 
   для: glsv (Дизайнер)   (20.09.2004 в 01:33)
 

Дизайнер (20.09.2004 в 01:33)
<?php
$query
="CREATE DATABASE 'test'";  => $query="CREATE DATABASE test; " ;
?>


Как всегда ошибка мелкая :)
В новой книге ей надо целую главу уделить :)

   
 
 автор: glsv (Дизайнер)   (20.09.2004 в 02:48)   письмо автору
 
   для: Zebra   (20.09.2004 в 02:38)
 

В смысле? Кавычек не надо? Или точка с запятой в конце?
Как сказать... Это совершенно рабочая строка. У меня работает именно так.
Это от настроек сервера видимо зависит.

   
 
 автор: J.Lex   (20.09.2004 в 02:49)   письмо автору
 
   для: glsv (Дизайнер)   (20.09.2004 в 02:48)
 

Дизайнер ты не понял он имел ввиду что первый твой пост был с $query="CREATE DATABASE 'test'"; ковычки это ошибка!
но а то что он тя поправляя сам допустил ошибку эт совсеми бывает!:))

   
 
 автор: glsv (Дизайнер)   (20.09.2004 в 03:01)   письмо автору
 
   для: J.Lex   (20.09.2004 в 02:49)
 

Да... откуда это я кавычки взял и сказал, что у меня так и работает :)
Извиняюсь... - поздно уже :)

   
 
 автор: LimP   (20.09.2004 в 20:20)   письмо автору
 
   для: glsv (Дизайнер)   (20.09.2004 в 03:01)
 

я знаете,че посоветую,все нужно делать в досе потому что тут и создал базу,в ней таблицу и все легким движением рукм проверил(ну в смысле,правильно ли,все поля прописал)а если в таком варианте код писать,то это очень громоздко получается...вместо 1 строчки в досе пишешь 15 на php ну конечно начинующему это полезно,я вообще,когда пишу че-нить,у меня есть вот такой файлик,его просто запускаешь,он автоматом создает и базу и таблицу...но потом я все равно по-привычке лезу в дос и все перепроверяю...
<?
//этот скрипт создает на хостинге необходимую базу данных и таблицу
//имя сервера базы данных на хостинге
$dblocation "localhost";
//имя пользователя базы данных
$dbuser "root";
//пароль
$dbpasswd "";

//пытаемся соединиться с базой данных
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if(!
$dbcnx)
{
 echo(
"<p>В настоящий момент этот сервер базы данных не доступен,поэтому 
 корректное отображение сраницы невозможно. </p>"
);
 exit();
}

//создаем базу данных
$query "CREATE DATABASE guestbook;";
$ok = @mysql_query($query,$dbcnx);
if(!
$ok)
{
 echo(
"<p><b>Ошибка в запросе №1 : ".mysql_error()."</b></p>");
 exit();
 }

//выбираем только что созданную базу данных
if(!mysql_select_db("guestbook",$dbcnx))
{
 echo(
"<p>База данных не создана,ошибка!</p>");
 exit();
}

//создаем таблицу в нашей базе данных
$query1 "CREATE TABLE guest (
  id_msg int(8) NOT NULL auto_increment,
  name tinytext,
  city tinytext,
  email tinytext,
  url tinytext,
  msg text,
  answer text,
  puttime datetime default NULL,
  hide tinyint(1) default NULL,
  PRIMARY KEY  (id_msg)
) TYPE=MyISAM;"
;
$ok1 = @mysql_query($query1,$dbcnx);
if(!
$ok1)
{
 echo(
"<p><b>Ошибка в запросе №2 : ".mysql_error()."</b></p>");
 exit();
 }
if (
$ok && $ok1)
{
 echo(
"<center><b>Все успешно установлено и настроено,пользуйте на здоровье!!</b></center>");  
 
$close mysql_close($dbcnx);
}
?>

   
 
 автор: J.Lex   (20.09.2004 в 20:50)   письмо автору
 
   для: LimP   (20.09.2004 в 20:20)
 

знаешь дос не дос но если так судить граф.программы для работы с MYSQL лучше чем дос!
ну а на хостинге с консолью ты не поработаешь!

   
 
 автор: cheops   (20.09.2004 в 20:59)   письмо автору
 
   для: LimP   (20.09.2004 в 20:20)
 

Я по началу тоже предпочитал консоль, потом обленился :))) и стал проектировать базу в phpMyAdmin - удобно, время экономится...

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=189

   
 
 автор: LimP   (20.09.2004 в 21:54)   письмо автору
 
   для: cheops   (20.09.2004 в 20:59)
 

не буду спорить,так как я еще не связывался с phpMyAdmin ,но чую,скоро прийдется...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования