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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Можно ли создавать новую и редактировать существующую БД MySQL средствами PHP?

Сообщения:  [1-10]   [11-14] 

 
 автор: Nickiomen   (07.05.2013 в 08:54)   письмо автору
 
   для: cheops   (06.05.2013 в 20:45)
 

Спасибо!

  Ответить  
 
 автор: cheops   (06.05.2013 в 20:45)   письмо автору
 
   для: Nickiomen   (06.05.2013 в 17:46)
 

Обычно проверяют состояние дескрипторов, которые возвращает mysql_query(). PHP и MySQL - две разные программные среды, ошибки в одной из них не отображаются в другой, если вы явно не запросите. Однако, запрос SET NAMES - атомарный, параметров не использует. Либо выполниться, если текущая версия поддерживает, либо нет (но таких дремучих версий вы сейчас не найдете). А @ используется для подавления предупреждений - тоже избыточно, скорее просто символизирует, что мы не собираемся слушать и обрабатывать сообщения об ошибках по данному запросу, так как на 99% уверены в том, что запрос выполнится, а если он не выполнится, тоже уже ничего поделать не сможем (по крайней мере из скрипта).

  Ответить  
 
 автор: Nickiomen   (06.05.2013 в 17:46)   письмо автору
 
   для: Nickiomen   (06.05.2013 в 15:11)
 

Sorry! Еще один вопрос и я отстану на время))) Почему @mysql_query

  Ответить  
 
 автор: Nickiomen   (06.05.2013 в 15:11)   письмо автору
 
   для: cheops   (06.05.2013 в 07:22)
 

Спасибо!

  Ответить  
 
 автор: cheops   (06.05.2013 в 07:22)   письмо автору
 
   для: Nickiomen   (05.05.2013 в 23:24)
 

Да, конечно, иначе с сервером соединение не установите и запросы будут завершаться ошибкой. Вот без этого участка вполне можно обойтись
<?php
...
  
// Устанавливаем кодировку соединения, иначе сервер будет
  // считать, что вы "говорите" на шведском
  
@mysql_query("SET NAMES 'utf8'");

  
// Давайте извелечем версию базы данных, чтобы проверить,
  // что все работает корректно
  
$query "SELECT VERSION()";
  
$ver mysql_query($query);
  if(!
$ver) exit("Ошибка выполнения запроса по причине ".mysql_error());
  if(
mysql_num_rows($ver)){
    echo 
"Текущая версия сервера - ".mysql_result($ver0); 
  }
  echo 
"<br />"
...
?>

SET NAMES 'utf8' вам потребуется, когда будете передавать или читать данные с участием русского языка.

  Ответить  
 
 автор: Nickiomen   (05.05.2013 в 23:24)   письмо автору
 
   для: cheops   (05.05.2013 в 19:32)
 

$dblocation = "localhost";
// Имя mysql-пользователя
$dbuser = "root";
// Пароль mysql-пользователя
$dbpassword = "";

// Устанавливаем соединение с базой данных
$dbcnx = mysql_connect($dblocation,$dbuser,$dbpassword);
if(!$dbcnx){
exit("Недоступен сервер базы данных");
}
Я этот пример видел почти в таком виде, только была еще добавлена проверка
if (!mysql_select_db($dbuser, $dbcnx))
Это вообще нужно?

  Ответить  
 
 автор: Nickiomen   (05.05.2013 в 22:10)   письмо автору
 
   для: cheops   (05.05.2013 в 19:32)
 

> $query = "CREATE DATABASE from_php DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
Я в шоке!!! И это весь ответ?))) Главное этого ответа нет ни в одной книге. Не на бумаге, ни в сетке... Спасибо огромное!!!

  Ответить  
 
 автор: cheops   (05.05.2013 в 19:32)   письмо автору
 
   для: Nickiomen   (05.05.2013 в 18:41)
 

С удовольствием. Просто нам сразу сложно понять, что требуется, так как терминология используется не очень привычная, а ухо уже ждет "правильные" ключевые слова :)
Лучше всего начать с расширения mysql - оно самое древнее, но и самое распространенное. С остальными расширениями будет проще разобраться, если вы знакомы с этим. Можно начать отталкиваться от следующего скрипта
<?php
  
// Сервер базы данных
  
$dblocation "localhost";
  
// Имя mysql-пользователя
  
$dbuser "root";
  
// Пароль mysql-пользователя
  
$dbpassword "";

  
// Устанавливаем соединение с базой данных
  
$dbcnx mysql_connect($dblocation,$dbuser,$dbpassword);
  if(!
$dbcnx){
    exit(
"Недоступен сервер базы данных");
  }

  
// Устанавливаем кодировку соединения, иначе сервер будет
  // считать, что вы "говорите" на шведском
  
@mysql_query("SET NAMES 'utf8'");

  
// Давайте извелечем версию базы данных, чтобы проверить,
  // что все работает корректно
  
$query "SELECT VERSION()";
  
$ver mysql_query($query);
  if(!
$ver) exit("Ошибка выполнения запроса по причине ".mysql_error());
  if(
mysql_num_rows($ver)){
    echo 
"Текущая версия сервера - ".mysql_result($ver0); 
  }
  echo 
"<br />";

  
// Создадим новую базу данных from_php
  
$query "CREATE DATABASE from_php DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
  if(
mysql_query($query)){
    echo 
"База данных from_php успешно создана";
  } else {
    echo 
"База данных from_php не содадана по причине ".mysql_error();
  }
?>

  Ответить  
 
 автор: Nickiomen   (05.05.2013 в 18:41)   письмо автору
 
   для: cheops   (05.05.2013 в 18:31)
 

Sorry! Может я не правильно выразился, но сделайте скидку человеку занимающемуся PHP 3 недели. Как это изобразить в PHP? Денвер базу создал, но как добавить в нее поля и инфу из PHP?

  Ответить  
 
 автор: cheops   (05.05.2013 в 18:31)   письмо автору
 
   для: Nickiomen   (05.05.2013 в 17:43)
 

Да, такая возможность имеется, для этого следует направлять SQL-запросы при помощи одной из библиотек-расширений (mysql, mysqli, pdo)
Для создания базы данных следует выполнить запрос
CREATE DATABASE db;

Для переименования отдельного оператора нет (вернее был, но выпилили), поэтому придется сначала создать новую базу данных new, а потом перетащить каждую из таблиц старой базы данных old в новую
RENAME TABLE `old`.`tbl1` TO `new`.`tbl1`;
...
RENAME TABLE `old`.`tblN` TO `new`.`tblN`;

После чего удалить старую базу данных old при помощи запроса
DROP DATABASE `old`;

  Ответить  

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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