Лекция · 5.7

Web-беттің дерекқормен байланысы

Instagram-дағы жаңа хабарлама лентасы HTML файлында жазылмаған — ол ДЕРЕКТЕР ҚОРЫНАН нақты уақытта алынып, содан кейін бетке «құйылады». Дәл осы «құю» процесін PHP тілі жасайды. Бүгін V бөлімнің қорытынды практикалық сабағы — веб-беттің деректер қорымен нақты байланысын құрамыз.

Динамикалық веб-бет
Анықтама
Деректер қоры бар web-бет — ДҚ-мен ДИНАМИКАЛЫҚ байланысты қолдайтын, мәліметтерді қарауға, өңдеуге және базаға енгізуге мүмкіндік беретін диалогтық бет.

HTML-мен қатар веб-бетті деректер қорымен байланыстыру үшін программалау тілі қажет — мысалы, PHP. PHP скрипттері жергілікті сервер (мыс. Apache) болмаса іске аспайды — сондықтан OpenServer жинағы (Apache + PHP + MySQL) қолданылады.

PHP-ДҚ байланысының бес қадамы
Алгоритм
1. MySQL серверіне қосылу.
2. Деректер қорын таңдау.
3. Сұранысты ұйымдастыру (қосу, өшіру, өзгерту, іздеу).
4. Сұраныс нәтижесін алу.
5. Деректер қорынан ажырау.
Есеп (қиын): барлық жазбаны веб-бетте көрсету

Берілді: kaz_mus_instruments ДҚ-ның producers кестесіндегі барлық жазба.

<?php
$conn = mysqli_connect("localhost", "root", "");
if (!$conn) {
    die('Did not connect: ' . mysqli_error());
}
mysqli_select_db($conn, "kaz_mus_instruments");
mysqli_query($conn, "SET NAMES utf8");

$result = mysqli_query($conn, "SELECT * FROM producers");
while ($row = mysqli_fetch_array($result)) {
    echo $row['id_producers'] . ". " . $row['name'];
    echo "<br />";
}
mysqli_close($conn);
?>
Кодты талдау
Код бөлігіҚызметі
<?php ... ?>HTML ішінде PHP кодының басы мен соңы
mysqli_connect(...)Серверге қосылу (хост, пайдаланушы, пароль)
if (!$conn) die(...)Қосылым сәтсіз болса, тоқтату
mysqli_select_db(...)Қай деректер қорын пайдалану керегін көрсету
while ($row = mysqli_fetch_array(...))Қайтарылған жазбаларды БІРІНЕН СОҢ БІРІН өту
mysqli_close($conn)Байланысты жабу

Барлық PHP айнымалы $ таңбасынан басталады. SET NAMES utf8 — кодтауды UTF-8 етіп орнатады, кириллица (қазақ, орыс) әріптерінің дұрыс көрінуі үшін қажет.

Кодтағы қатені табу

Кейде код жұмыс істемей қалады — себебін табу да маңызды дағды. Үш ұқсас код фрагментін қарастырайық.

Есеп (қиын): кодтардың нәтижесін болжау

A нұсқасы: mysqli_select_db("kaz_mus_instruments", $conn) — параметрлер РЕТІ ТЕРІС! Дұрысы: бірінші аргумент әрдайым $conn байланысы болуы керек.

Неге қате шығады? Функция дұрыс жұмыс істемей, $result мәні false болады, сол себепті mysqli_fetch_array() шақырғанда «expects parameter 1 to be resource, boolean given» деген қате шығады.

B нұсқасы: барлығы ДҰРЫС жазылған — барлық өндіруші аты мен мекенжайы шығады.

C нұсқасы: сұраныс ТЕК name өрісін таңдайды (SELECT name FROM producers), бірақ echo жолында id_producers мен address өрістерін де шығаруға тырысады.

Жауабы: C нұсқасында нәтижеде ЖОҚ өрістер сұралғандықтан, олардың орны бос немесе қате шығады — параметр реті мен сұралатын өрістер сұраныспен ДӘЛ сәйкес болуы керек.

⚠️
Ескіру туралы: ескірген mysql_* функциялары (мыс. mysql_connect()) қазіргі PHP нұсқаларынан толығымен алынып тасталған — тек заманауи mysqli_* баламасын қолдану керек.
🎯 ҰБТ байланысы
mysqli_* функцияларының дұрыс синтаксисі мен параметр реті жиі тексеріледі.
1
mysqli_* функцияларында БІРІНШІ аргумент әрдайым $conn байланысы.
2
SELECT-те сұралмаған өрісті echo арқылы шығару мүмкін емес.
3
SET NAMES utf8 — кириллица әріптерінің дұрыс көрінуін қамтамасыз етеді.
Сабақ қорытындысы
  • Динамикалық веб-бет — ДҚ-мен байланысатын, деректі нақты уақытта көрсететін бет.
  • PHP-ДҚ байланысы: қосылу → таңдау → сұраныс → нәтиже алу → ажырау.
  • mysqli_connect, mysqli_select_db, mysqli_query, mysqli_fetch_array, mysqli_close — негізгі функциялар.
  • Параметр реті мен сұралатын өрістер сұраныспен дәл сәйкес болуы шарт.