У меня есть файл дампа таблицы MySQL (который можно посмотреть здесь: http://pastebin.com/raw.php?i=GQkjrDNz), который я хотел бы использовать для создания таблицы (с именем php_blog_archive согласно файлу дампа), используя содержимое этого файла sql.
Проблема в том, что у меня нет доступа к phpmyadmin, поэтому я могу выполнить это только с помощью команды php, я посмотрел несколько таких потоков и код, который у меня есть,
<?php
// Config
$db_user = "username";
$db_pass = "password";
exec("mysql -u $db_user -p $db_pass -h localhost databasename < restoreold.sql ");
?>
Но это не работает, это просто ничего не делает — даже не показывает никаких ошибок. Может кто-нибудь, пожалуйста, посоветуйте мне, как поступить?
Прежде всего команда должна быть:
<?php
// Config
$db_user = "username";
$db_pass = "password";
exec("mysql -u " . $db_user . " -p " . $db_pass . " -h localhost databasename < restoreold.sql "); // Added an space before -h
?>
И во-вторых, у вас есть права доступа для создания / редактирования / добавления файла и выполнения команды?
Я думаю, у вас есть старая проблема с паролем.
<?php
// Config
$db_user = "username";
$db_pass = "password";
exec("mysql -u " . $db_user . " -p'" . $db_pass . "' -h localhost databasename < restoreold.sql 2>&1", $output);
echo nl2br($output);
?>
Это закончится в mysql -u username -p'password' -h localhost databasename < restoreold.sql 2>&1
Последнее, что нужно сделать, — повторить сообщения об ошибках или что-то еще в HTML. Это делается через 2>&1
и $output
ссылочная переменная, которая будет преобразована из nl (новые строки будут заканчиваться <br />
) в HTML и повторил.
Надеюсь, что это помогает и работает.