На уроке будет рассмотрен пример соединения с базой данных mySQL посредством языка php и необходимые для этого функции php; разобраны конкретные примеры соединения с mySQL
Соединение с базой данных посредством php
Соединение с базой данных происходит в 4 этапа:
- Открыть соединение с сервером
- Выбрать базу данных
- Послать запрос базе дынных
- Закрытие БД (не всегда)
Рассмотрим на примерах каждый этап отдельно:
Соединение с сервером посредством php
- Создание переменной, ассоциирующейся с соединением с сервером mySql:
1
2
3
4
5
| <?php
$conn = mysql_connect ("localhost", "root", "");
…
mysql_close($conn);
?> |
<?php
$conn = mysql_connect ("localhost", "root", "");
…
mysql_close($conn);
?>
Функция языка php mysql_connect
— открывает соединение с сервером MySQL. Три параметра функции:
"localhost"
— сервер, при работе локально указывается значение «localhost»
"root"
— имя пользователя, при работе локально обычно указывается «root»
""
— третий параметр — пароль, локально пароль отсутствует
- Обработка возможной ошибки
1
2
3
4
5
6
7
| <?php
$conn = mysql_connect ("localhost", "root", "")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
…
mysql_close($conn);
?> |
<?php
$conn = mysql_connect ("localhost", "root", "")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
…
mysql_close($conn);
?>
or die (mysql_error())
Функция php mysql_error()
возвращает строку ошибки последней операции с MySQL и может быть использована не только при попытке соединения с сервером, но и в других вариантах работы с базой данных mysql
Выбор базы данных mySQL и соединение с ней
$conn = mysql_connect ("localhost", "root", "")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено"); |
$conn = mysql_connect ("localhost", "root", "")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
mysql_select_db("db_name", $conn);
?> |
mysql_select_db("db_name", $conn);
?>
Функция php mysql_connect
— выбирает базу данных MySQL. Два параметра функции:
"db_name"
— имя базы данных
$conn
— указатель на соединение
Создание запроса к базе данных
$conn = mysql_connect ("localhost", "root", "")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
mysql_select_db("db_name", $conn); |
$conn = mysql_connect ("localhost", "root", "")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
mysql_select_db("db_name", $conn);
$sql="SELECT * FROM `teachers` WHERE `name`='Иванов'" ;
$sql= (string) $sql;
$result = mysql_query($sql, $conn)
or die ("no!".mysql_error());
?> |
$sql="SELECT * FROM `teachers` WHERE `name`='Иванов'" ;
$sql= (string) $sql;
$result = mysql_query($sql, $conn)
or die ("no!".mysql_error());
?>
Функция php mysql_query
— посылает запрос активной базе данных сервера, на который ссылается переданный указатель. Два параметра функции:
$sql
— запрос
$conn
— указатель на соединение
Важно: Чтобы проще обнаружить ошибку можно выводить запрос:
Обработка результатов запроса к базе mySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php
…
mysql_select_db("db_name", $conn);
$sql="SELECT * FROM `teachers` WHERE `name`='Иванов'" ;
$sql= (string) $sql;
$result = mysql_query($sql, $conn)
or die ("no!".mysql_error());
while($row = mysql_fetch_array($result)) {
$name=$row["name"];
$zp= $row["zarplata"];
echo $name.' '. $zp;
}
?> |
<?php
…
mysql_select_db("db_name", $conn);
$sql="SELECT * FROM `teachers` WHERE `name`='Иванов'" ;
$sql= (string) $sql;
$result = mysql_query($sql, $conn)
or die ("no!".mysql_error());
while($row = mysql_fetch_array($result)) {
$name=$row["name"];
$zp= $row["zarplata"];
echo $name.' '. $zp;
}
?>
Функция php mysql_fetch_array
— возвращает массив с обработанным рядом результата запроса или FALSE
, если рядов, отвечающих параметрам запроса, нет
Решение проблем с кодировкой
Важно: в ряде случаев, если результаты не выдаются, следует поменять кодировку на windows12-51
1
2
3
4
5
| $conn = mysql_connect ("localhost", "root", "")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
mysql_select_db("institute", $conn);
mysql_query("SET NAMES cp1251"); |
$conn = mysql_connect ("localhost", "root", "")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
mysql_select_db("institute", $conn);
mysql_query("SET NAMES cp1251");
Использование для обработки цикла foreach
1
2
3
4
| foreach($result as $row){
$name=$row["name"];
$zp= $row["zarplata"];
} |
foreach($result as $row){
$name=$row["name"];
$zp= $row["zarplata"];
}
Пример: вывести все записи для фамилии Иванов
1
2
3
4
5
6
7
8
9
10
11
| $conn = mysql_connect ("localhost", "root", "")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
mysql_select_db("institute", $conn);
$sql="SELECT * FROM `teachers` WHERE `name`='Иванов'" ;
$sql= (string) $sql;
$result = mysql_query($sql, $conn)
or die ("no!".mysql_error());
// сохраняем результат в виде массива $row
$row=mysql_fetch_array($result);
print_r($row); |
$conn = mysql_connect ("localhost", "root", "")
or die("Нет соединения: " . mysql_error());
print ("Удачно соединено");
mysql_select_db("institute", $conn);
$sql="SELECT * FROM `teachers` WHERE `name`='Иванов'" ;
$sql= (string) $sql;
$result = mysql_query($sql, $conn)
or die ("no!".mysql_error());
// сохраняем результат в виде массива $row
$row=mysql_fetch_array($result);
print_r($row);
Функция print_r()
в php предназначена для вывода удобочитаемой информации о переменной
Важно: Абсолютно одинаковым результатом будет обращение к полю по его имени и по его номеру:
и
Для отображения всех значений используется цикл:
while($row=mysql_fetch_assoc($result)){
echo $row["name"]."<br>";
} |
while($row=mysql_fetch_assoc($result)){
echo $row["name"]."<br>";
}
Точечная выборка (одной записи)
Синтаксис:
mysql_result($result, int row, string field) |
mysql_result($result, int row, string field)
Пример: Выбираем значение поля "name"
в записи под номером 1
mysql_result($result, 1, "name") |
mysql_result($result, 1, "name")
Задание php mysql 1: Выполните запрос на выборку id
и name
из таблицы учителей.
Отобразите данные на странице в виде: id: name
Дополнительные php функции для работы с mySQL
mysql_num_rows($result); // Количество записей
// пример:
echo mysql_num_rows($result); // Количество записей
mysql_num_fields($result); // Количество полей
// пример:
echo mysql_num_fields($result); // Количество полей
mysql_field_name($result,1); // имя поля под номером 1
// пример:
echo mysql_field_name($result,1); // имя поля под номером 1
mysql_affected_rows([$conn]); // количество изменений
mysql_insert_id([$conn]); //id последней записи |
mysql_num_rows($result); // Количество записей
// пример:
echo mysql_num_rows($result); // Количество записей
mysql_num_fields($result); // Количество полей
// пример:
echo mysql_num_fields($result); // Количество полей
mysql_field_name($result,1); // имя поля под номером 1
// пример:
echo mysql_field_name($result,1); // имя поля под номером 1
mysql_affected_rows([$conn]); // количество изменений
mysql_insert_id([$conn]); //id последней записи