[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Иморт sql в бд через php
toshjkeee
Как реализовать иморт sql в бд через php? Спасибо.



Спустя 2 минуты, 50 секунд (2.11.2011 - 00:24) caballero написал(а):
mysql_query()

Спустя 10 часов, 16 минут, 4 секунды (2.11.2011 - 10:40) toshjkeee написал(а):
Вот весь код:
    <?
$bdhost = "open-server"; // Хост
$bduser = "wphost"; // Имя пользователя
$bdpassword = ""; // Пароль

$bdconnect = mysql_connect($bdhost, $bduser, $bdpassword) or die(mysql_error());

mysql_query("CREATE DATABASE as") or die(mysql_error());
mysql_query("CREATE USER 'as'@'%'") or die(mysql_error());
mysql_query("GRANT ALL PRIVILEGES ON * . * TO 'as'@'%' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0") or die(mysql_error());
mysql_query("GRANT ALL PRIVILEGES ON `as` . * TO 'as'@'%'") or die(mysql_error());
mysql_query(file_get_contents('import-db.sql')) or die(mysql_error());

mysql_close($bdconnect);
?>

При запуске выводится ошибка:
Цитата
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 'as' at line 1

В import-db.sql ошибок быть не может.
Спасибо.

Спустя 1 час, 49 минут, 38 секунд (2.11.2011 - 12:30) caballero написал(а):
так введи запросы отдельно в каком нибудь mysql клиенте и посмотри в каком конкретно ошибка
или кроме тупого die выведи код запроса в котором ошибка.

если готов второй день ждать пока добрый дядя на форуме разберется в твоем коде так хотя бы выполни элементарные действия чтобы этому дяде упростить задачу локализовав ошибку а не преъдявляя целую портянку кода.


Спустя 3 минуты, 54 секунды (2.11.2011 - 12:34) toshjkeee написал(а):
Кажется я понял, надо сделать select db... не смейтесь, если не так, я новичок.
Подскажите, пожалуйста, как это сделать? mysql_select_db("as"); ?

Спустя 13 минут, 45 секунд (2.11.2011 - 12:48) killer8080 написал(а):
mysql_query("CREATE DATABASE `as`") or die(mysql_error());

Спустя 1 минута, 23 секунды (2.11.2011 - 12:49) killer8080 написал(а):
toshjkeee
AS - в mysql служебное слово, нужно экранировать ``

Спустя 31 минута, 22 секунды (2.11.2011 - 13:20) caballero написал(а):
переименуй в ass и все будет в порядке

Спустя 7 минут, 43 секунды (2.11.2011 - 13:28) toshjkeee написал(а):
Вот новый код:
    <?
function
generatePassword($length = 16)
{
$chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ0123456789';
$numChars = strlen($chars);
$string = '';
for ($i = 0; $i < $length; $i++)
{
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
return $string;
}
$bdnamegen = generatePassword(16);
$bdusergen = generatePassword(16);
$bdpasswordgen = generatePassword(16);
$bdhost = "open-server"; // Хост
$bduser = "wphost"; // Имя пользователя
$bdpassword = ""; // Пароль
$bdconnect = mysql_connect($bdhost, $bduser, $bdpassword) or die(mysql_error());
mysql_query("CREATE DATABASE `$bdnamegen`") or die(mysql_error());
mysql_query("CREATE USER '$bdusergen'@'localhost'") or die(mysql_error());
mysql_query("GRANT ALL PRIVILEGES ON * . * TO '$bdusergen'@'%' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0") or die(mysql_error());
mysql_query("GRANT ALL PRIVILEGES ON `$bdnamegen` . * TO '$bdusergen'@'%'") or die(mysql_error());
mysql_close($bdconnect);
?>

Он генерирует случайные название бд, логин бд и создаёт бд с этими данными.
Вот два вопроса:
1) У меня также тут есть генератор пароля ($bdpasswordgen), но как выставить пароль на бд через php?
2) Как сделать импорт sql файла в бд?

Спустя 3 часа, 58 минут, 52 секунды (2.11.2011 - 17:27) killer8080 написал(а):
Цитата (toshjkeee @ 2.11.2011 - 13:28)
1) У меня также тут есть генератор пароля ($bdpasswordgen), но как выставить пароль на бд через php?

наверно так
mysql_query("CREATE DATABASE `".$bdnamegen."`") or die(mysql_error());

mysql_query("
GRANT ALL PRIVILEGES ON `"
.$bdnamegen."` . *
TO '"
.$bdusergen."'@'%'
IDENTIFIED BY '"
.$bdpasswordgen."'
WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0
"
) or die(mysql_error());

Спустя 3 часа, 36 минут, 59 секунд (2.11.2011 - 21:04) toshjkeee написал(а):
Цитата (killer8080 @ 2.11.2011 - 14:27)
Цитата (toshjkeee @ 2.11.2011 - 13:28)
1) У меня также тут есть генератор пароля ($bdpasswordgen), но как выставить пароль на бд через php?

наверно так
mysql_query("CREATE DATABASE `".$bdnamegen."`") or die(mysql_error());

mysql_query("
GRANT ALL PRIVILEGES ON `"
.$bdnamegen."` . *
TO '"
.$bdusergen."'@'%'
IDENTIFIED BY '"
.$bdpasswordgen."'
WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0
"
) or die(mysql_error());

Спасибо. Правильно.

Осталось только узнать, как импортировать файл в бд

Спустя 1 час, 14 минут, 24 секунды (2.11.2011 - 22:18) killer8080 написал(а):
Цитата (toshjkeee @ 2.11.2011 - 21:04)
Осталось только узнать, как импортировать файл в бд

используй mysqli
$db = new mysqli('host', 'user', 'pass', 'db_name');
$db->multi_query($sql_dump);

Спустя 1 час, 33 минуты, 24 секунды (2.11.2011 - 23:52) toshjkeee написал(а):
Код:
<?
$sql_dump = (sql.txt);
$db = new mysqli('open-server', 'aaa', '', 'aaa');
$db->multi_query($sql_dump);
?>

Ошибка:
Цитата

Notice: Use of undefined constant sql - assumed 'sql' in W:\html\wphost\www\import.php on line 2

Notice: Use of undefined constant txt - assumed 'txt' in W:\html\wphost\www\import.php on line 2

Спустя 4 минуты (2.11.2011 - 23:56) Игорь_Vasinsky написал(а):
killer8080
Цитата
GRANT ALL PRIVILEGES ON `".$bdnamegen."` . *
TO '".$bdusergen."'@'%'
IDENTIFIED BY '".$bdpasswordgen."'
WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0


да чтож такое.. учишь учишь, пишешь.. а оказывается ни хрена не знаешь.... всё-> я тепер на своём ноуте играть буду.

Спустя 1 час, 18 минут, 37 секунд (3.11.2011 - 01:14) killer8080 написал(а):
Цитата (toshjkeee @ 2.11.2011 - 23:52)
Ошибка:Цитата

Notice: Use of undefined constant sql - assumed 'sql' in W:\html\wphost\www\import.php on line 2

Notice: Use of undefined constant txt - assumed 'txt' in W:\html\wphost\www\import.php on line 2

Ну так ещё бы, это что?
$sql_dump = (sql.txt);

наверно подразумевалось это?
$sql_dump = file_get_contents('sql.txt');


Цитата (Игорь_Vasinsky @ 2.11.2011 - 23:56)
да чтож такое.. учишь учишь, пишешь.. а оказывается ни хрена не знаешь.... всё-> я тепер на своём ноуте играть буду.

Не огорчайся ты так, открою маленький секрет, команды администрирования mysql можно подсмотреть в PMA user posted image user posted image ну или накрайняк мануал user posted image

Спустя 8 часов, 58 минут, 58 секунд (3.11.2011 - 10:13) toshjkeee написал(а):
Работает, Работает, Работает!!! Спасибо biggrin.gif Доволен как слон!!! А коннект с бд надо закрывать?

Спустя 18 минут, 10 секунд (3.11.2011 - 10:32) toshjkeee написал(а):
код:
    <?
function
generatePassword($length = 16)
{
$chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ0123456789';
$numChars = strlen($chars);
$string = '';
for ($i = 0; $i < $length; $i++)
{
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
return $string;
}
$sql_dump = file_get_contents('sql.txt');
$bdnamegen = generatePassword(16);
$bdusergen = generatePassword(16);
$bdpasswordgen = generatePassword(16);
$bdhost = "open-server"; // Хост
$bduser = "wphost"; // Имя пользователя
$bdpassword = ""; // Пароль
$bdconnect = mysql_connect($bdhost, $bduser, $bdpassword) or die(mysql_error());
mysql_query("CREATE DATABASE `$bdnamegen`") or die(mysql_error());
mysql_query("CREATE USER '$bdusergen'@'localhost' IDENTIFIED BY '$bdpasswordgen'") or die(mysql_error());
mysql_query("GRANT ALL PRIVILEGES ON * . * TO '$bdusergen'@'%' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0") or die(mysql_error());
mysql_query("GRANT ALL PRIVILEGES ON `$bdnamegen` . * TO '$bdusergen'@'%'") or die(mysql_error());
mysql_close($bdconnect);
$db = new mysqli('open-server', '$bdusergen', '$bdpasswordgen', '$bdnamegen');
$db->multi_query($sql_dump);
$db->close();
?>

Ошибки:
Цитата

Warning: mysqli::mysqli() [mysqli.mysqli]: (28000/1045): Access denied for user '$bdusergen'@'127.0.0.5' (using password: YES) in W:\html\wphost\www\sql.php on line 26

Warning: mysqli::multi_query() [mysqli.multi-query]: Couldn't fetch mysqli in W:\html\wphost\www\sql.php on line 27

Warning: mysqli::close() [mysqli.close]: Couldn't fetch mysqli in W:\html\wphost\www\sql.php on line 28


Что не так тут? Спасибо

Спустя 4 часа, 5 минут, 44 секунды (3.11.2011 - 14:37) killer8080 написал(а):
А зачем два соединения с БД?
$db = new mysqli($bdhost, $bduser, $bdpassword) or die($db->error);
$query = array();
$query []= "CREATE DATABASE `$bdnamegen`";
$query []= "USE `$bdnamegen`";
$query []= "CREATE USER '$bdusergen'@'localhost' IDENTIFIED BY '$bdpasswordgen'";
$query []= "GRANT ALL PRIVILEGES ON * . * TO '$bdusergen'@'%' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0";
$query []= "GRANT ALL PRIVILEGES ON `$bdnamegen` . * TO '$bdusergen'@'%'";
$query []= file_get_contents('sql.txt');
$query = implode(";\r\n", $query).';';

$db->multi_query($query) or die($db->error);

Спустя 4 минуты, 40 секунд (3.11.2011 - 14:42) sergeiss написал(а):
Цитата (toshjkeee @ 3.11.2011 - 11:32)
Что не так тут? Спасибо

Убери одинарные кавычки:

//Вместо
$db = new mysqli('open-server', '$bdusergen', '$bdpasswordgen', '$bdnamegen');

// напиши
$db = new mysqli('open-server', $bdusergen, $bdpasswordgen, $bdnamegen);

Спустя 29 минут, 54 секунды (3.11.2011 - 15:12) Игорь_Vasinsky написал(а):
biggrin.gif ты и тут мутишь...
Быстрый ответ:

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