При изучении PHP по книгам и руководствам часто возникают проблемы с созданием базы данных (далее - БД) при работе с OpenSrver. Я решил рассмотреть этот вопрос по шагам. И так, приступаем!
- Открываем КС - командную строку и переходим в директорию БД OpenServer
cd C:\OpenServer\modules\database\MariaDB-5.5\bin
Соединяемся с БД -mysql -u root
Получаем подтверждение об установленном соединении или повторяем все с начала. - Для просмотра уже существующих БД набираем
SHOW DATABASES;
- Для работы и перехода к существующей БД - набираем
use name_database;
name_database - имя уже существующей БД.ИЛИ создаем новую БД с помощью командыCREATE DATABASE name_database;
набираемuse name_database;
для работы с вновь созданной базой данных - Создаем таблицу в нашей БД, следующей командой:
CREATE TABLE `aliens_abduction` (
При наборе использовал Гравис - одинарная кавычка (буква Ё в англ раскладке)
`first_name` VARCHAR(30) ,
`last_name` VARCHAR(30) ,
`whеп_it_hаррепеd` varchar(30) ,
`hоw_lопg` VARCHAR(30) ,
`how_many` VARCHAR(30) ,
`alien_description` VARCHAR(lOO) ,
`what_they_did` VARCHAR(lOO) ,
`fang_spotted` VARCHAR(lO) ,
`other` VARCHAR(lOO) ,
`email` VАRСНАR(50)
) ;
- Для того, чтобы добавить данные в новую таблицу:
INSERT INTO alien_abduction (first_name, last_name, when_it_happened, how_long, how_many, alien_description, what_they_did, fang_spotted, other, email)
VALUES ('Салли', 'Джонс', '3 дня назад', '1 день' ,'четыре', 'зеленые с шестью щупальцами', 'мы просто разговаривали и играли с со6акой' , ' да', ' возможно, я видела вашу собаку, свяжитесь со мной','sally@mail.com'); - Для того, чтобы посмотреть все данные в таблице набираем:
SELECT * FROM aliens_abduction
Теперь нам осталось сделать так, чтобы данные в таблицу добавлялись автоматически рнр-сценарием
- На OpenServer в папке domains у нас есть папка с нашим сайтом mysite. Внутри нее есть два файла report.html и report.php.
report.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Aliens Abducted Me - Report an Abduction</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <h2>Aliens Abducted Me - Report an Abduction</h2> <p>Share your story of alien abduction:</p> <form method="post" action="report.php"> <label for="firstname">First name:</label> <input type="text" name="firstname" /><br /> <label for="lastname">Last name:</label> <input type="text" name="lastname" /><br /> <label for="email">What is your email address?</label> <input type="text" name="email" /><br /> <label for="whenithappened">When did it happen?</label> <input type="text" name="whenithappened" /><br /> <label for="howlong">How long were you gone?</label> <input type="text" name="howlong" /><br /> <label for="howmany">How many did you see?</label> <input type="text" name="howmany" /><br /> <label for="aliendescription">Describe them:</label> <input type="text" name="aliendescription" size="32" /><br /> <label for="whattheydid">What did they do to you?</label> <input type="text" name="whattheydid" size="32" /><br /> <label for="fangspotted">Have you seen my dog Fang?</label> Yes <input name="fangspotted" type="radio" value="yes" /> No <input name="fangspotted" type="radio" value="no" /><br /> <img src="fang.jpg" width="100" height="175" alt="My abducted dog Fang." /><br /> <label for="other">Anything else you want to add?</label> <textarea name="other"></textarea><br /> <input type="submit" value="Report Abduction" name="submit" /> </form> </body> </html>
report.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Aliens Abducted Me - Report an Abduction</title> </head> <body> <h2>Aliens Abducted Me - Report an Abduction</h2> <?php $first_name = $_POST['firstname']; $last_name = $_POST['lastname']; $when_it_happened = $_POST['whenithappened']; $how_long = $_POST['howlong']; $how_many = $_POST['howmany']; $alien_description = $_POST['aliendescription']; $what_they_did = $_POST['whattheydid']; $fang_spotted = $_POST['fangspotted']; $email = $_POST['email']; $other = $_POST['other']; $dbc = mysqli_connect('localhost', 'root', '', 'aliendatabase') or die('Error connecting to MySQL server.'); $query = "INSERT INTO alien_abduction (first_name, last_name, when_it_happened, how_long, " . "how_many, alien_description, what_they_did, fang_spotted, other, email) " . "VALUES ('$first_name', '$last_name', '$when_it_happened', '$how_long', '$how_many', " . "'$alien_description', '$what_they_did', '$fang_spotted', '$other', '$email')"; $result = mysqli_query($dbc, $query) or die('Error querying database.'); mysqli_close($dbc); echo 'Thanks for submitting the form.<br />'; echo 'You were abducted ' . $when_it_happened; echo ' and were gone for ' . $how_long . '<br />'; echo 'Number of aliens: ' . $how_many . '<br />'; echo 'Describe them: ' . $alien_description . '<br />'; echo 'The aliens did this: ' . $what_they_did . '<br />'; echo 'Was Fang there? ' . $fang_spotted . '<br />'; echo 'Other comments: ' . $other . '<br />'; echo 'Your email address is ' . $email; ?> </body> </html>
- Для соединения с уже созданной базой данных мы создали переменную с запросом:
$dbc = mysqli_connect('localhost', 'root', '', 'aliendatabase') or die('Error connecting to MySQL server.');
Первый параметр -localhost остается без изменений, затем идет имя пользователя (в моем случае - root), пароля нет - '' и имя БД - aliendatabase - В следующей перменной мы поместили все действия с данными (куда попадет тот или иной параметр введенный пользователем)
$query = "INSERT INTO alien_abduction (first_name, last_name, when_it_happened, how_long, " . "how_many, alien_description, what_they_did, fang_spotted, other, email) " . "VALUES ('$first_name', '$last_name', '$when_it_happened', '$how_long', '$how_many', " . "'$alien_description', '$what_they_did', '$fang_spotted', '$other', '$email')";
- Запрос к БД -
$result = mysqli_query($dbc, $query) or die('Error querying database.');
- РНР-функция
die ()
прерывает ход выполнения сценария и выводит сообщение о коде, который выполнить не удалось. Хотя это и не раскрывает всех причин неудачи в подробностях, функция die () все же сообщает нам: что-то случилось и необходимо принимать меры по решению проблемы. Если что-то не так с одним из четырех аргументов, необходимых для соединения функцииmysqli_connect ( )
, или сервер баз данных не может быть найден, функция die () останавливает ход выполнения сценария и выводит сообщение об ошибке, которое передается ей в качестве аргумента в скобках. - Функции
mysqli_query ()
необходимо передать в качестве аргумента SQL-запрос в виде РНР-строки (значения переменной $query), для того чтобы произвести добавление данных о похищении космическими пришельцами. - После всего закрываем БД -
mysqli_close($dbc);
Более подробно о работе с базой данных смотрите мой пост —Введение в MySQL
Комментариев нет:
Отправить комментарий