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

Форум MySQL

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

 

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

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

тема: Неправильный скрипт создания базы данных?
 
 автор: #umBer.[XIII]   (19.11.2006 в 12:07)   письмо автору
 
 

Есть скрипт :

<?php
    
/*HEADER*/
    
include("conf.php");
?>
<?php
    $dbconnect1
= @mysql_connect($dblocation,$dbuser,$dbpsw) or 
die (
"<p>В данный момент сервера MySQL недоступны. Сообщите об этом администратору портала</p>");
if (
$dbconnect1)
{
    echo(
"<p>Соединение с сервером MySQL прошло успешно.</p>");
}
//СЛЕДУЮЩИЕ СТРОКИ НЕ НУЖНЫ
    /*$selectdb = mysql_select_db($dbname, $dbconnect);
    mysql_select_db($dbname, $dbconnect1);
    $sql = 'SELECT * FROM '.$sbname;
    if (!@ mysql_select_db($dbname, $dbconnect1))
    {
        echo ("Корректное отображение базы данных невозможно.");
    }*/
    //Следующие строки должны создавать базу данных testing и вводить данные в созданную
    //таблицу, но они этого не далеют, хотя и пишут что всё хорошо то бишь база
    //Создание базы данных testing успешно завершено
$sql 'create database testing;'
        
' use testing;'
        
' CREATE TABLE `test` ('
        
' `name` int(11) NOT NULL auto_increment,'
        
' `passw` text NOT NULL,'
        
' `url` text NOT NULL,'
        
' PRIMARY KEY (`name`)'
        
' ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;'
        
' ';
        
/*$createdatabase = ($dbconnect1);
    if  (!@ $createdatabase)
    {
        echo ("БАЗА ДАННЫХ и ТАБЛИЦЫ НЕ СОЗДАНЫ");
    }
    else 
        echo ("БАЗА ДАННЫХ и ТАБЛИЦЫ СОЗДАНЫ");
        */
        
if (!@ $sql)
        {
            echo (
"<p>Не удалось создать базу данных ".$dbname."</p>");
        }
        else 
            echo (
"<p>Создание базы данных ".$dbname." успешно завершено</p>");
?>

и есть файл конфига

<?php
    $dblocation 
"localhost";
    
$dbname=      "testing";
    
$dbuser=      "root";
    
$dbpsw=          "";
    
$dbconnect= @mysql_connect($dblocation,$dbuser,dbpsw);
?>

Скрипт должен создавать базу данных и вносить в неё заданные таблицы с заданными свойствами и etc.
Пишет что всё создано, но в phpMyadmin всй пусто.
Юзаю последнюю версию denwer дабы не лазить в множестве непонятных мне настроек apache и mySQL.
ВОПРОС:Где ошибка?

   
 
 автор: NIK   (19.11.2006 в 12:18)   письмо автору
 
   для: #umBer.[XIII]   (19.11.2006 в 12:07)
 

ты просто задаёшь переменную $sql и всё. Она несет в себе текст запроса и не более. её ещё нужно обработать функцией mysql_query() - эта функция отправляет твой запрос к БД. Повнимательнее прочитай мануал..


if (!@mysql_query($sql))
        {
            echo ("<p>Не удалось создать базу данных ".$dbname."</p>");
        }
        else 
            echo ("<p>Создание базы данных ".$dbname." успешно завершено</p>");
        }

   
 
 автор: #umBer.[XIII]   (19.11.2006 в 12:39)   письмо автору
 
   для: NIK   (19.11.2006 в 12:18)
 

Про отправление запроса - это я понял. Но скрипт всё равно не работает.

   
 
 автор: cheops   (19.11.2006 в 12:48)   письмо автору
 
   для: #umBer.[XIII]   (19.11.2006 в 12:39)
 

1) Уберите все символы @ - их выставляют только когда скрипт отлажен
2) Добавьте сообщение об выводе ошибок
<?php
if (!mysql_query($sql)) 
        { 
            echo (
"<p>Не удалось создать базу данных ".$dbname."</p>".mysql_error()); 
        } 
        else  
            echo (
"<p>Создание базы данных ".$dbname." успешно завершено</p>"); 
        }
?>

Что теперь выводит скрипт?

   
 
 автор: #umBer.[XIII]   (19.11.2006 в 13:04)   письмо автору
 
   для: cheops   (19.11.2006 в 12:48)
 

аналогично - "Не удалось создать базу данных testing"

   
 
 автор: #umBer.[XIII]   (19.11.2006 в 13:07)   письмо автору
 
   для: #umBer.[XIII]   (19.11.2006 в 13:04)
 

Я подумал - может быть ошибка заключается в неправильном запросе к MySQL? Может быть там ошибка?

$sql = 'create database testing;'
        . ' use testing;'
        . ' CREATE TABLE `test` ('
        . ' `id` int(11) NOT NULL auto_increment,'
        . ' `l_name` text NOT NULL,'
        . ' `l_adres` text NOT NULL,'
        . ' PRIMARY KEY (`id`)'
        . ' ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;'
        . ' ';

Правда вроде бы ошибок нет....
Скрипт php был создан как раз с помощью PhpMyAdmin.

   
 
 автор: #umBer.[XIII]   (19.11.2006 в 13:40)   письмо автору
 
   для: #umBer.[XIII]   (19.11.2006 в 13:07)
 

И туда же вопрос: почему невозможно использование функции mysql_create_db? Или как её правильно использовать? вот мой пример:

<?php
//Создаём базу данных
    
$_create_db mysql_create_db($dbname);
//Проверяем выполнение условия, что база данных создана.
if (!$_create_db)
{
    echo(
"<p align='center' style='color:red'>База данных не создана. Ошибка".mysql_error."</p>");
}
else
    echo(
"<p align='center' style='color:red'>База данных создана.</p>");
?>

или

<?php
$_create_db 
mysql_create_db($dbname);
if (
$_create_db)
{
    echo(
"<p align='center' style='color:red'>База данных создана.</p>");
}
else
    echo(
"<p align='center' style='color:red'>База данных не создана. Ошибка".mysql_error."</p>");
?>

Все равно - и в том и в другом случае выводится ошибка вида:

Fatal error: Call to undefined function mysql_create_db() in z:\home\test\www\data.php on line 14
то есть
Фатальная ошибка: Обрашение к неопределённой функции mysql_create_db()

Не пойму, как она может быть неопределённой, есль в мануале черным по серому написано -
mysql_create_db - создаёт базу данных MySQL(правда эта функция НИ РАЗУ не употреблялась в мануале:-()
ЗЫ Различия между 1-ым и 2-ым скриптом: в условии проверяются 1-если база данных не создана, во 2-ом - если база данных успешно создана.

   
 
 автор: #umBer.[XIII]   (19.11.2006 в 14:21)   письмо автору
 
   для: #umBer.[XIII]   (19.11.2006 в 13:40)
 

Проблема была решена следующим образом
1 - был создан новый скрипт вида:

<?php
    
include('conf.php');
?>
<?php
//Открываем соединение с сервером MySQL
    
$_connect mysql_connect($dblocation,$dbuser,$dbpsw) or die
        
//Ввыводим сообщение в случае недоступности сервера MySQL
         
("<p align='center'> Извините, но в данный момент сервер <p color='red'>MySQL</p> недоступен.</p><p>Возможна ошибка MySQL: <i>".mysql_error."</i></p>");
if (
$_connect)
{
    echo (
"<p align='center'>Соединение установлено.</p>");    
}    
/*
//Создаём базу данных
    $_create_db = mysql_create_db($dbname);
//Проверяем выполнение условия, что база данных создана.
if (!$_create_db)
{
    echo("<p align='center' style='color:red'>База данных не создана. Ошибка".mysql_error."</p>");
}
else
    echo("<p align='center' style='color:red'>База данных создана.</p>");
//Завершаем соединение*/
//Создаём базу данных через запрос к SQL 
$createdb_ "CREATE DATABASE testing;";
$_use ="USE testing;";
$into "CREATE TABLE `test` (
`name` int( 11 ) NOT NULL AUTO_INCREMENT ,
`passw` text NOT NULL ,
`url` text NOT NULL ,
PRIMARY KEY ( `name` ) 
) ENGINE = MYISAM DEFAULT CHARSET = cp1251 AUTO_INCREMENT =5;"
;
if((
mysql_query($createdb_)))
{
    echo(
"<p align='center' style='color:red'>База данных успешно создана.</p>");
}
else
    echo (
"<p align='center' style='color:red'>База данных не создана. Возможна ошибка: ".mysql_error()."</p>");

if((
mysql_query($_use)))
{
    echo(
"<p align='center' style='color:red'>База данных функционирует.</p>");
}
else
    echo (
"<p align='center' style='color:red'>База данных не функционирует. Возможна ошибка: ".mysql_error()."</p>");

if((
mysql_query($into)))
{
    echo(
"<p align='center' style='color:red'>Обработка данных завершена.</p>");
}
else
    echo (
"<p align='center' style='color:red'>Обработка данных невозможна. Возможна ошибка: ".mysql_error()."</p>");

if(
mysql_close($_connect))
    {
        echo(
"<p align='center' style='color:red'>Соедининие завершено.</p>");
    }
    else
        echo(
"<p align='center' style='color:red'>Соединение не может быть завершено. Возможна ошибка выполнения скрипта</p>");
?>

Разборка скрипта:
1 - было создано соединение с сервером SQL
2 - информацию для создания базы данных, создания таблицы и вноса данных в таблицу я разбил на переменные
$createdb_ - создание базы данных
$_use - создание в ней таблицы
$into - внос данных в таблицу
Также были созданы условия в которых выполнялись запросы к базе данных с перечисленными выше переменными.
После этого мы закрыли соединение
:-)

   
 
 автор: cheops   (19.11.2006 в 18:27)   письмо автору
 
   для: #umBer.[XIII]   (19.11.2006 в 13:40)
 

>mysql_create_db
Эта функция устарела исключена, теперь базу данных следует создавать при помощи SQL-запроса
CREATE DATABASE db;

   
 
 автор: cheops   (19.11.2006 в 18:28)   письмо автору
 
   для: #umBer.[XIII]   (19.11.2006 в 13:04)
 

>аналогично - "Не удалось создать базу данных testing"
А после этой строки ничего нет?

   
Rambler's Top100
вверх

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