Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Работа с MySQL: Как выбирать, обновлять и удалять данные

#1 RussiaStudent

RussiaStudent
  • Пользователь
  • 19 сообщений
  • Репутация: 0
0

Отправлено 08 Январь 2009 - 17:32

Приветствую, это снова я.

Всё так же продолжаю читать книжку по PHP, в работе с файлами я вроде бы разобрался но не до конца, но не в этом дело.
Перешёл я к изучению запросов к базе данных и не могу понять что написано в книге.
Мне это сложно пока. Как вообще работать с базами данных в PHP? Может приведёте парочку примеров, чтобы до меня до пёрло...

Вот к примеру в книге написано

Для отправки запроса к базе данных в PHP используется функция
resource mysql_query(string $query [,resource $link_identifier ])
Где mysql_query - это имя функции. Данная функция возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. Параметр $query (обязательный) - содержит в себе строку SQL запроса. $link_identifier (необязательный) - является указателем на соединение.


Так я не понял откуда брать этот указатель на соединение, и что это вообще за соединение?
Когда я пишу к примеру запрос к базе данных
$resource=mysql_query("SELECT `pole1`,`pole2` FROM `test`");
У меня выдаётся ошибка:

Warning: mysql_query(): Access denied for user 'ODBC'@'localhost' (using password: NO) in k:\home\localhost\www\1.php on line 2
Warning: mysql_query(): A link to the server could not be established in k:\home\localhost\www\1.php on line 2


Как я понял выдаётся предупреждение из-за отсутствия доступа к 'ODBC'@'localhost'. А вот второе предупреждение ссылка сервера не может быть стабильна.
Объясните пожалуйста что это всё значит...
Заранее очень благодарен

 

 

  • 0

#2 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 08 Январь 2009 - 17:47

Сначала нужно создать БД и подключиться к ней.
Если ты создал БД - следущий фрагмент кода для тебя:
<?php 
$mysql_database = "имя базы данных";
$mysql_username = "имя пользователя бд";
$mysql_password = "пароль";
$mysql_host = "localhost"; // Адрес сервера

$mysql_connect = mysql_connect("$mysql_host", "$mysql_username", "$mysql_password");
mysql_select_db("$mysql_database");

// Теперь начинаем запрос:
$resource=mysql_query("SELECT `pole1`,`pole2` FROM `test`");

// Если это просто текстовая инфа - можно сразу и вывести
echo"$resource";

?>
$resource - переменная в которую записывается результат обработки запроса
  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата



#3 RussiaStudent

RussiaStudent
    Topic Starter
  • Пользователь
  • 19 сообщений
  • Репутация: 0

Отправлено 08 Январь 2009 - 18:56

Спасибо большое, теперь мне уже понятнее как работать с БД
И ещё вопрос.
А зачем нужна переменная $link_identifier? И почему мы пишем без неё?
  • 0

#4 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 08 Январь 2009 - 19:19

Пожалуйста.
Я не помню зачем, а пишем без нее т.к. она не обязательная. ^_^


  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата



#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 09 Январь 2009 - 02:06

RussiaStudent, $link_identifier - это указатель на соединение с MySQL. Для чего она нужна опишу позже, а сейчас посмотрим пример и на комментарии в нём(В примере $link_identifier - это $mysql_connect)
$mysql_database = "имя базы данных";
$mysql_username = "имя пользователя бд";
$mysql_password = "пароль";
$mysql_host = "localhost"; // Адрес сервера MySQL

/*создание подключения к серверу*/
$mysql_connect = mysql_connect($mysql_host, $mysql_username, $mysql_password);
mysql_select_db($mysql_database, $mysql_connect); // Выбор БД для нашего соединения

// Теперь начинаем запрос:
$resource = mysql_query("SELECT `pole1`,`pole2` FROM `test`", $mysql_connect);
И так... Переменная $mysql_connect выступает в роли соединения с БД. Представим что нам нужно 2 соединения с базами данных, потому что информация хранится на разных серверах.
Вот тут-то и пригодится наша переменная, являющаяся указателем на нужное соединение.

Если в функциях mysql_select_db() и mysql_query() не указывать данный параметр, в качестве него будет выбрано последнее открытое соединение. А это, я думаю, вы понимаете к чему может привести. К ошибкам при запросе не к той БД не того подключения :)

Поэтому предпочтительно всегда указывать соединение с которым мы работаем, это как признак хорошего тона. Не дай бог вам предложат сделать синхронизацию БД и работать с той, к которой есть подключение. Если вы не указывали данный параметр в функциях, вам придётся перелопатить все запросы.


FordogeN, что это такое...
....
$mysql_connect = mysql_connect("$mysql_host", "$mysql_username", "$mysql_password");
....
Какие нафиг кавычки, это же и так уже переменные! Зачем ты их ещё в кавычки пихаешь. Работать это конечно будет, но изначально так не делают!
И ещё...
..............
// Если это просто текстовая инфа - можно сразу и вывести
echo"$resource";
Ты когда-нибудь видел, чтобы запрос вернул тебе текст? Учим матчасть.

Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях, mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве затронутых или возвращённых рядов. Вполне возможна ситуация, когда успешный запрос не затронет ни одного ряда.




RussiaStudent, запросов довольно много различных.
  • 0

#6 crackos

crackos
  • Пользователь
  • 78 сообщений
  • Репутация: 0

Отправлено 31 Январь 2009 - 10:54

А как тогда вывести данные с бд?


  • 0

#7 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 31 Январь 2009 - 18:25

crackos, нужно просто обработать полученный указатель на результат запроса.
В PHP есть множество способов, я покажу один, обработка построчно.

/* Подключение к БД */
...........
$resourse = mysql_query("SELECT `pole1`,`pole2`, `pole3` FROM `table`");
if(mysql_num_rows($resourse) == 0) echo "Данных нет";
else
{
   while($array = mysql_fetch_array($resource)) // Построчное считывание в массив
   {
	  echo "pole1 - {$array[0]} :: pole2 - {$array[1]} :: pole3 - {$array[2]}"; //по номеру столбца
	  echo "pole1 - {$array['pole1']} :: pole2 - {$array['pole2']} :: pole3 - {$array['pole3']}"; //по названию поля

   }
}
Ничего сложного...
  • 0


Оформление форума – IPBSkins.ru