Книги наших сотрудников
 
Гостевая книга 

справочник функций

скачать учебник PHP

Форум PHP

Учебник по PHP 4

Сколько новых сайтов Вы делаете за год? назад


Варианты ответов

Голосов

%

1 сайт 36800 13.2%
2-3 сайта 19268 6.9%
не больше 10 сайтов 13850 5.0%
10-20 сайтов 11274 4.0%
Так много, что не могу сосчитать 143796 51.4%
Я вообще не делаю сайты 54598 19.5%

Общее количество проголосовавших составляет: 279586

Оглавление

  1. Основы PHP
  2. Операторы языка PHP
  3. Строковые функции
  4. Массивы
  5. Функции
  6. Работа с файлами
  7. Регулярные выражения
  8. Сессии и cookies в PHP
  9. Работа с FTP
  10. Проверка данных
  11. Гостевая книга
  12. PHP и MySQL
Rambler's Top100
Яндекс цитирования
Rambler's Top100



Взаимодействие PHP и MySQL

Предыдущая

Взаимодействие PHP и MySQL

В этом разделе приводятся описания наиболее часто используемых функций, позволяющих работать с MySQL средствами PHP.

Замечание

SQL может применятся в прикладных программах двумя способами: в виде встроенного SQL и интерфейса программирования приложений (Application Program Interface, API). Первый способ напоминает использование PHP - инструкции SQL размещаются среди кода прикладной программы. В настоящий момент такой стиль не поддерживает ни MySQL ни PHP. Второй подход заключается в том, что программа взаимодействует с СУБД посредством совокупности функций. Именно такой подход используется при взаимодействии PHP и MySQL.

mysql_connect

resource mysql_connect ([string server [, string username [, string password]]])

Эта функция устанавливает соединение с сервером server MySQL и возвращает дескриптор соединения с базой данных, по которому все другие функции, принимающие этот дескриптор в качестве аргумента, будут однозначно определять выбранную базу данных. Вторым и третьим аргументами этой функции являются имя пользователя username и его пароль password соответственно:

<?php
$dblocation = "localhost"; // Имя сервера
$dbuser = "root";          // Имя пользователя
$dbpasswd = "";            // Пароль
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx) // Если дескриптор равен 0 соединение не установлено
{
  echo("<P>В настоящий момент сервер базы данных не доступен, поэтому 
           корректное отображение страницы невозможно.</P>");
  exit();
}
?>

Переменные $dblocation, $dbuser и $dbpasswd хранят имя сервера, имя пользователя и пароль, и, как правило, прописываются в отдельном файле (к примеру, config.php), который потом вставляется в каждый PHP-файл, в котором имеется код для работы с MySQL:

<? 
$dblocation = "localhost";
$dbname = "forum";
$dbuser = "root";
$dbpasswd = "";
?>

mysql_close

bool mysql_close ([resource link_identifier])

Эта функция разрывает соединение с сервером MySQL, и возвращает true при успешном выполнении операции и false в противном случае. Функция принимает в качестве аргумента дескриптор соединения с базой данных, возвращаемый функцией mysql_connect.

К примеру:

// устанавливаем соединение с базой данных 
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); 
if (!$dbcnx) 
{
  // Выводим предупреждение
  echo ("<P>В настоящий момент сервер базы данных не доступен, поэтому 
  корректное отображение страницы невозможно.</P>");
  // Завершаем работу в случае неудачи
  exit();
}
if(mysql_close($dbcnx)) // разрываем соединение
{
  echo("Соединение с базой данных прекращено");
}
else
{
  echo("Не удалось завершить соединение");
}

mysql_select_db

bool mysql_select_db (string database_name [, resource link_identifier])

Использование этой функции эквивалентно вызову команды USE в SQL-запросе, т. е. функция mysql_select_db выбирает базу данных для дальнейшей работы, и все последующие SQL-запросы применяются к выбранной базе данных. Функция принимает в качестве аргументов название выбираемой базы данных database_name и дескриптор соединения resource. Функция возвращает true при успешном выполнении операции и false в противном случае. К примеру:

<?php
// Код соединения с базой данных
if (!@mysql_select_db($dbname, $dbcnx)) 
{
  echo( "<P>В настоящий момент база данных не доступна, поэтому
            корректное отображение страницы невозможно.</P>" );
  exit();
}
?>

Имеет смысл помещать функции для соединения и выбора базы данных в тот же файл (config.php), где объявлены переменные с именами сервера, пользователя и паролем:

<?php
$dblocation = "localhost";
$dbname = "softtime";
$dbuser = "root";
$dbpasswd = "";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx) 
{
  echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому 
            корректное отображение страницы невозможно.</P>" );
  exit();
}
if (!@mysql_select_db($dbname, $dbcnx)) 
{
  echo( "<P>В настоящий момент база данных не доступна, поэтому
            корректное отображение страницы невозможно.</P>" );
  exit();
}
?>

mysql_query

resource mysql_query (string query)

Эта функция применяется для отправки серверу SQL-запросов. Функция возвращает дескриптор запроса в случае успеха и false в случае неудачного выполнения запроса. В листинге 13.32 показан код, с помощью которого извлекается одна строка из таблицы authors базы данных forum.

<?php
include "config.php";
$ath = mysql_query("select * from authors;");
if($ath)
{
  $author = mysql_fetch_array($ath);
  echo "<br>имя = ".$author['name']."<br>";
  echo "пароль = ".$author['passw']."<br>";
  echo "e-mail = ".$author['email']."<br>";
  echo "url = ".$author['url']."<br>";
  echo "ICQ = ".$author['icq']."<br>";
  echo "about = ".$author['about']."<br>";
  echo "photo = ".$author['photo']."<br>";
  echo "time = ".$author['time'];
}
else
{
  echo "<p><b>Error: ".mysql_error()."</b></p>";
  exit();
}
?>

Результат выполнения показан на следующем рисунке:

mysql_fetch_array

array mysql_fetch_array (resource result)

Эта функция возвращает значения полей в виде ассоциативного массива, в качестве аргумента принимает дескриптор запроса возвращаемый функцией mysql_query. Вот как с помощью этой функции можно вывести все строки таблицы authors:

<?php
include "config.php";
$ath = mysql_query("select * from authors;");
if($ath)
{
  // Определяем таблицу и заголовок
  echo "<table border=1>";
  echo "<tr><td>имя</td><td>пароль</td><td>e-mail</td><td>url</td></tr>";
  // Так как запрос возвращает несколько строк, применяем цикл
  while($author = mysql_fetch_array($ath))
  {
    echo "<tr><td>".$author['name']."&nbsp;</td><td>".$author['passw']."
    &nbsp </td><td>".$author['email']."&nbsp;</td><td>".  
    $author['url']."&nbsp;</td></tr>";
  }
  echo "</table>";
}
else
{
  echo "<p><b>Error: ".mysql_error()."</b><p>";
  exit();
}
?>

Результат показан на следующем рисунке:

mysql_result

mixed mysql_result (resource result, int row)

С помощью этой функции можно получить доступ к отдельному полю записи. Допустим, нам нужно вывести имя автора, который первым найдется в базе данных. Сделать это можно следующим образом:

<?php
include "config.php";
$ath = mysql_query("select name from authors;");
if($ath)
{
  echo mysql_result($ath,0,'name');
}
else
{
  echo "<p><b>Error: ".mysql_error()."</b><p>";
  exit();
}
?>

mysql_fetch_object

object mysql_fetch_object (resource result)

Эта функция возвращает поля записи данных в виде объекта. Ниже приведен пример, в котором с помощью этой функции из таблицы authors выводятся имя, URL и e-mail авторов.

<?php
include "config.php";
$ath = mysql_query("select * from authors;");
if($ath)
{
  while($row = mysql_fetch_object($ath))
  {
    echo "<p>name: ".$row->name."</p>";
    echo "<p>url: ".$row->url."</p>";
    echo "<p>email: ".$row->email."</p>";
  }
}
else
{
  echo "<p><b>Error: ".mysql_error()."</b><p>";
  exit();
}
?>

Результат выполнения показан на следующем рисунке:

mysql_fetch_row

array mysql_fetch_row (resource result)

В отличие от функции mysql_fetch_object, эта функция возвращает не объект, а массив, в котором содержатся значения полей:

<?php
include "config.php";
$ath = mysql_query("select * from authors;");
if($ath)
{
  while($row = mysql_fetch_row($ath))
  {
    echo "<p>name: ".$row[1]."</p>";
    echo "<p>url: ".$row[4]."</p>";
    echo "<p>email: ".$row[3]."</p>";
  }
}
else
{
  echo "<p><b>Error: ".mysql_error()."</b><p>";
  exit();
}
?>

Результат выполнения этого кода в точности совпадает с приведённым выше.

Предыдущая

Если Вам нужна частная профессиональная консультация от авторов многих книг Кузнецова М.В. и Симдянова И.В., добро пожаловать в наш Консультационный Центр SoftTime.