В этом руководстве вы познакомитесь с тем, как начать управлять базой данных из вашего PHP скрипта. Вы изучите добавление записи в таблицу MySQL, используя PHP код . Перед тем как начать, ознакомьтесь с нашими другими руководствами, которые раскрывают основные шаги работы с PHP и базами данных – подключение из PHP к базе данных MySQL (англ.).
Перед началом проверьте наличие следующего:
Прежде всего, нам нужно создать таблицу для ваших данных. Это очень простая процедура, которую вы можете сделать в phpMyAdmin из вашей панели управления хостингом. Мы уже описывали процесс создания базы данных MySQL в предыдущем руководстве (англ.), поэтому мы пропустим этот момент здесь.
После входа на страницу phpMyAdmin вы увидите подобную картину:
Создадим таблицу с названием Students
для нашей базы данных u266072517_name
. Создать новую таблицу можно по кнопке Create Table
. После этого вы увидите новую страницу, где вы можете ввести все необходимые данные для своей таблицы:
Это наиболее простой способ создания таблицы, для получения большей информации по поводу структуры таблицы/базы данных и какие настройки можно использовать для каждого поля, обратитесь к официальной документации phpMyAdmin (англ.).
Приведём здесь несколько простых пояснение полей, которые мы будем использовать:
Нажмите Save и ваша таблица будет создана.
Прежде всего, нужно установить соединение с базой данных, согласно нашему предыдущему руководству . После этого мы можем продолжить с SQL запросом на добавление записи в таблицу MySQL – INSERT . Здесь полный пример кода с подключением и методом вставки:
" . mysqli_error($conn); } mysqli_close($conn); ?>
Таким образом первая часть кода (строки 3 – 18 ) относятся к части установления соединения к базе данных. Мы не будем заново проходить по этой части, если вы хотите знать, что означает каждая строка, обратитесь к нашему предыдущему руководству как подключиться к базе данных (англ.).
Начнём со строки 19 :
$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", "[email protected]")";
Это наиболее важная строка кода, она делает всё, о чём мы описываем в этом руководстве – добавление записи в таблицу MySQL в базу данных. INSERT INTO – это выражение, которое добавляет запись в указанную таблицу базы данных MySQL. В нашем примере мы добавляем данные в таблицу Students .
Двигаясь дальше, в скобках, мы определяем поля таблицы, значения в которые будем добавлять: (name, lastname, email) . Данные будут добавлены в определённом порядке. Если мы напишем (email, lastname, name) , значения будут добавлены в другом порядке.
Следующая часть значения VALUES . Здесь мы задаём наши значения в ранее указанные поля. Таким образом, каждое поле получит своё значение. Например, в нашем случае это будет что-то вроде: name = Thom, lastname = Vial, email = [email protected] .
Что важно отметить, что тут мы формируем запрос SQL , используя PHP код. SQL запросы должны быть заключены в кавычки. В нашем примере, всё между кавычками и идущее после $sql = это SQL запрос.
Следующая часть кода (20 – 22 строки) запускает наш запрос и производит проверку успешности выполнения запроса:
If (mysqli_query($conn, $sql)) { echo "New record created successfully"; }
Выводится сообщение об удаче, если запрос был запущен верно.
И заключительная часть (22 – 24 строки) показывают другое сообщение, на случай неудачного выполнения нашего запроса:
Else {
echo "Error: " . $sql . "
" . mysqli_error($conn);
}
Этот код отображает нам сообщение об ошибке, на случай, если что-то пошло не так.
Как и в предыдущем примере, нам нужно прежде всего выполнить подключение к базе данных, которое производится при создании нового объекта PDO – предыдущее руководство рассказывает о том, как это происходит. Поскольку подключение к базе данных MySQL – это PDO объект, мы должны использовать различные PDO ‘методы’ (своего рода функции, которые являются частью определённого объекта) для подготовки и запуска запроса. Методы объектов вызываются таким образом:
$the_Object->the_Method();
PDO позволяет ‘подготовить’ SQL код перед его выполнением. Запрос SQL вычисляется и корректируется перед запуском. Так, простая атака путём SQL инъекции может быть выполнена заполняя код SQL в поле формы. Например:
// User writes this in the username field of a login form thom"; DROP DATABASE user_table; // The final query becomes this "SELECT * FROM user_table WHERE username = thom"; DROP DATABASE user_table;
Поскольку SQL код синтаксически правильный, точка с запятой делает из DROP DATABASE user_table новый запрос SQL, и ваша таблица пользователей удалена. Подготавливаемые выражения не разрешают символы “ и ; для завершения исходного запроса, и инструкция DROP DATABASE никогда не выполнится.
Всегда используйте подготавливаемые запросы, когда отправляете или получаете данные из базы данных с PDO.
Для использования подготавливаемых выражений, нужно создать новую переменную, которая вызовет метод prepare() на объекте базы данных.
В правильном виде код выглядит:
$servername = "mysql.hostinger.com"; $database = "u266072517_name"; $username = "u266072517_user"; $password = "buystuffpwd"; $sql = "mysql:host=$servername;dbname=$database;"; $dsn_Options = ; // Create a new connection to the MySQL database using PDO, $my_Db_Connection is an object try { $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options); echo "Connected successfully"; } catch (PDOException $error) { echo "Connection error: " . $error->getMessage(); } // Set the variables for the person we want to add to the database $first_Name = "Thom"; $last_Name = "Vial"; $email = "[email protected]"; // Here we create a variable that calls the prepare() method of the database object // The SQL query you want to run is entered as the parameter, and placeholders are written like this:placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Now we tell the script which variable each placeholder actually refers to using the bindParam() method // First parameter is the placeholder in the statement above - the second parameter is a variable that it should refer to $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement->bindParam(:email, $email); // Execute the query using the data we just defined // The execute() method returns TRUE if it is successful and FALSE if it is not, allowing you to write your own messages here if ($my_Insert_Statement->execute()) { echo "New record created successfully"; } else { echo "Unable to create record"; } // At this point you can change the data of the variables and execute again to add more data to the database $first_Name = "John"; $last_Name = "Smith"; $email = "[email protected]"; $my_Insert_Statement->execute(); // Execute again now that the variables have changed if ($my_Insert_Statement->execute()) { echo "New record created successfully"; } else { echo "Unable to create record"; }
В строках 28, 29 и 30 мы используем метод bindParam() объекта базы данных. Есть так же метод bindValue() , отличающийся от предыдущего.
Обратите внимание, что мы повторно используем переменную $first_Name и задаём ей новое значение во второй раз. Если вы проверите свою базу данных после запуска этого скрипта, там будут оба из заданных имени, вопреки этому значение переменной $first_Name будет равно “John” в конце этого скрипта. Помните, что PHP оценивает содержимое скрипта перед его запуском.
Если вы измените свой скрипт заменив bindParam на bindValue , вы добавите в базу MySQL “Thom Vial” дважды в базу данных и John Smith будет проигнорирован.
Если запрос, который мы запустили в базе данных MySQL выполнился успешно, мы увидим такое сообщение:
В любом другом случае вместо сообщения, приведенного выше, будет показано сообщение об ошибке. Например, давайте допустим одну синтаксическую ошибку в нашем коде и мы получим такое:
Как мы видим, первая часть кода в порядке, подключение было успешно установлено, но наш запрос SQL при выполнении столкнулся с неудачей.
"Error: INSERT INTO Students {name, lastname, email} VALUES ("Thom", "Vial", "[email protected]") You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "{name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")" at line 1"
Допущена синтаксическая ошибка, которая приводит к неудаче в выполнении нашего скрипта. Ошибка была здесь:
$sql = "INSERT INTO Students {name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")";
Как вы видите, мы используем фигурные скобки вместо круглых. Это неверно и приводит к синтаксической ошибке в нашем скрипте.
В строке 7 подключения PDO, режим обработки ошибок установлен в ‘display all exceptions’ (отображать все исключения). Если вы это уберёте из скрипта и запрос потерпит неудачу, вы не получите никакого сообщения об ошибке. Со включёнными исключениями, будут отображаться конкретные возникшие проблемы. В основном, это лучше использовать, когда разрабатываете скрипт, так как это может выявить имена баз данных и таблиц, которые вы бы хотели спрятать от кого-либо, кто может получить несанкционированный доступ к вашим данным. В случае выше, когда фигурные скобки использовались вместо круглых, ошибка выглядит, как показано ниже:
Fatal error: Uncaught exception "PDOException" with message "SQLSTATE: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "{name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")" at line 1"
Другие проблемы, с которым вы можете столкнуться:
Все эти ошибки могут быть исправлены следуя руководствам по исправлению ошибок или проверяя журнал ошибок (англ.).
После успешного добавления данных мы должны увидеть их в нашей базе данных. Вот пример таблицы, в которую мы добавили наши данные, если смотреть в phpMyAdmin
.
В этом руководстве вы изучили, как использовать PHP код для добавления записи в таблицу MySQL с использованием MySQLi и PDO . Также рассмотрели случаи распространённых ошибок и их решения. Знание того, как использовать PHP код, чтобы добавить в базу данных MySQL пригодится независимо от того, вы учитесь программировать или уже создаёте свой сайт.
Последнее обновление: 1.11.2015
Для добавления данных используется выражение "INSERT":
$query ="INSERT INTO tovars VALUES(NULL, "Samsung Galaxy III","Samsumg")";
Выражение "INSERT" вставляет в таблицу одну строку. После ключевого слова INTO указывается название таблицы, а после VALUES в скобках указываются набор значений для всех столбцов. Так как у нас в таблице три столбца, то мы указываем три значения.
Так как в прошлой теме при создании таблицы мы указывали следующую очередность столбцов: id, name, company, то в данном случае для столбца id передается значение NULL, для name - "Samsung Galaxy III", а для company - "Samsumg".
Поскольку столбец id определен как AUTO_INCREMENT, то нам необязательно указывать для него определенное числовое значение, и можно передать значение NULL, а MySQL присвоит столбцу следующее доступное значение.
Теперь рассмотрим добавление данных на примере. Создадим файл create.php со следующим содержимым:
Данные добавлены"; } // закрываем подключение mysqli_close($link); } ?>
Здесь код взаимодействия с базой данных объединен с функциональностью форм: c помощью формы мы вводим данные для добавления в бд.
Здесь мы использовали функцию mysqli_real_escape_string() . Она служит для экранизации символов в строке, которая потом используется в запросе SQL. В качестве параметров она принимает объект подключения и строку, которую надо экранировать.
Таким образом, мы применяем экранизацию символов фактически два раза: сначала для sql-выражения с помощью функции mysqli_real_escape_string() , а затем для html с помощью функции htmlentities() . Это позволит нам защититься сразу от двух видов атак: XSS-атак и SQL-инъекций.
В этой статье мы разберём, пожалуй, одни из самых важных SQL-запросов . Это запросы на добавление и удаление записей из таблицы базы данных . Поскольку, ОЧЕНЬ часто приходится добавлять новые записи в таблицу , причём делать это в автоматическом режиме, то данный материал обязателен к изучению.
Для начала SQL-запрос на добавление новой записи в таблицу :
INSERT INTO users (login, pass) values("TestUser", "123456")
При добавлении записи вначале идёт команда "INSERT INTO ", затем название таблицы, в которую мы вставляем запись. Далее идёт в круглых скобках названия полей, которые мы хотим заполнить. А затем в круглых скобках после слова "values " начинаем перечислять значения тех полей, которые мы выбрали. После выполнения этого запроса в нашей таблице появится новая запись.
Иногда требуется обновить запись в таблице , для этого существует следующий SQL-запрос :
UPDATE users SET login = "TestUser2", pass="1234560" WHERE login="TestUser"
Данный запрос является более сложным, так как он имеет конструкцию "WHERE ", но о ней чуть ниже. Вначале идёт команда "UPDATE ", затем имя таблицы, а после "SET " мы описываем значения всех полей, которые мы хотим изменить. Было бы всё просто, но встаёт вопрос: "А какую именно запись следует обновлять? ". Для этого существует "WHERE ". В данном случае мы обновляем запись, поле "login " у которой имеет значение "TestUser ". Обратите внимание, что если таких записей будет несколько, то обновятся абсолютно все ! Это очень важно понимать, иначе Вы рискуете потерять свою таблицу.
Давайте немного ещё поговорим о "WHERE ". Помимо простых проверок на равенство существуют так же и неравенства, а также логические операции: AND и OR .
UPDATE users SET login = "TestUser2", pass="1234560" WHERE id < 15 AND login="TestUser"
Данный SQL-запрос обновит те записи, id которых меньше 15 И поле "login " имеет значение "TestUser ". Надеюсь, Вы разобрались с конструкцией "WHERE ", потому что это очень важно. Именно "WHERE " используется при выборке записей из таблиц , а это самая частоиспользуемая задача при работе с базами данных.
И, напоследок, простой SQL-запрос на удаление записей из таблицы :
DELETE FROM users WHERE login="TestUser2"
После команды "DELETE FROM " идёт имя таблицы, в которой требуется удалить записи. Дальше описываем конструкцию "WHERE". Если запись будет соответствовать описанным условиям, то она будет удалена. Опять же обратите внимание, в зависимости от количества записей, удовлетворяющих условию после "WHERE ", может удалиться любое их количество.
В этой статье мы рассмотрим, как использовать PHP для вставки строк в базу данных MySQL.
Сначала нужно создать таблицу для данных. Это простая процедура, которую можно выполнить с помощью phpMyAdmin в панели управления хостингом.
После входа вы phpMyAdmin вы увидите такой интерфейс:
Создадим в базе данных u266072517_name таблицу с именем Students, нажав на кнопку «Создать таблицу». После этого мы увидите новую страницу, на которой задаем все необходимые параметры таблицы:
Это самая простая настройка, которую можно использовать для таблицы и получения дополнительной информации о структуре таблиц / баз данных.
Параметры столбцов:
Сначала необходимо установить соединение с базой данных. После этого используем SQL-запрос INSERT. Полный пример кода:
" . mysqli_error($conn); } mysqli_close($conn); ?>
Первая часть кода (3 — 18 строка) предназначена для подключения к базе данных.
Начнем со строки № 19:
$sql = "INSERT INTO Students (name, lastname, email) VALUES ("Thom", "Vial", "[email protected]")";
Она вставляет данные в базу MySQL. INSERT INTO — это оператор, который добавляет данные в указанную таблицу. В нашем примере данные добавляются в таблицу Students.
Далее идет перечисление столбцов, в которые вставляются значения: name, lastname, email. Данные будут добавлены в указанном порядке. Если бы мы написали (email, lastname, name), значения бы были добавлены в другом порядке.
Следующая часть — это оператор VALUES. Здесь мы указываем значения для столбцов: name = Thom, lastname = Vial, email = [email protected].
Мы запустили запрос с использованием PHP-кода. В программном коде SQL-запросы должны быть экранированы кавычками. Следующая часть кода (20-22 строка) проверяет, был ли наш запрос успешным:
if (mysqli_query($conn, $sql)) { echo "New recordcreatedsuccessfully"; }
Этот код выводит сообщение об успешном выполнении запроса.
И последняя часть (22 — 24 строка) отображает уведомление, если запрос не был успешным:
else {
echo "Error: " . $sql . "
" . mysqli_error($conn);
}
Сначала нам нужно подключиться к базе данных путем создания нового объекта PDO. При работе с ним будем использовать различные методы PDO. Методы объектов вызываются следующим образом:
$the_Object->the_Method();
PDO позволяет «подготовить» SQL-код до его выполнения. SQL-запрос оценивается и «исправляется» перед запуском. Например, простейшая атака с использованием SQL-инъекции может быть выполнена через простое введение SQL-кода в поле формы. Например:
Так как это синтаксически правильный SQL- код, точка с запятой делает DROP DATABASE user_table новым SQL-запросом, и пользовательская таблица удаляется. Подготовленные выражения (связанные переменные) не позволяют, чтобы точка с запятой и кавычки завершали исходный запрос.Поэтому команда DROP DATABASE никогда не будет выполнена.
Чтобы использовать подготовленные выражения, нужно написать новую переменную, которая вызывает метод prepare() объекта базы данных.
Корректный код:
getMessage(); } // Устанавливаем переменные для персоны, которую мы хотим добавить в базу данных $first_Name = "Thom"; $last_Name = "Vial"; $email = "[email protected]"; // Создаем переменную, которая вызывает методобъекта базы данных prepare() // Запрос SQL, который вы хотите выполнить, вводится как параметр, а заполнители пишутся следующим образом:placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Теперь мы указываем скрипту, какая переменная ссылается на каждый заполнитель, чтобы использовать метод bindParam() // Первый параметр - это заполнитель в операторе выше, второй - это переменная, на которую он должен ссылаться $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement->bindParam(:email, $email); // Выполняем запрос, используя данные, которые только что определили // Метод execute() возвращает TRUE, если он выполнен успешно, и FALSE, если нет, предоставляя вам возможность вывести собственное сообщение if ($my_Insert_Statement->execute()) { echo "New recordcreatedsuccessfully"; } else { echo "Unable to createrecord"; } // В этой точке можно изменить данные переменных и выполнить запрос, чтобы добавить другие данные в базу data to the database $first_Name = "John"; $last_Name = "Smith"; $email = "[email protected]"; $my_Insert_Statement->execute(); // Выполняем снова, когда переменная изменена if ($my_Insert_Statement->execute()) { echo "New recordcreatedsuccessfully"; } else { echo "Unable to createrecord";
В строках 28, 29 и 30 мы используем метод bindParam() объекта базы данных. Также существует метод bindValue(), который сильно отличается от предыдущего.
Если вы обновите скрипт, чтобы заменить bindParam на bindValue, вы дважды вставите в базу данных «Thom Vial», а John Smith будет проигнорирован.
Если запрос на вставку строк в базу был успешным, мы увидим следующее сообщение:
В любом другом случае будет отображено сообщение об ошибке. Например, давайте сделаем в коде одну синтаксическую ошибку, и мы получим следующее:
Первая часть кода в порядке, соединение было успешно установлено, но SQL-запрос не прошел.
"Error: INSERT INTO Students {name, lastname, email} VALUES ("Thom", "Vial", "[email protected]") You have an error in your SQL syntax; check the manualthatcorresponds to your MySQL server version for the rightsyntax to use near "{name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")" at line 1"
Была допущена синтаксическая ошибка, которая вызвала сбой скрипта. Ошибка была здесь:
$sql = "INSERT INTO Students {name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")";
Мы использовали фигурные скобки вместо обычных. Это неверно, и скрипт выдал синтаксическую ошибку.
В строке 7 соединения PDO для режима ошибок установлено «display all exceptions». Если задано другое значение, и запрос не удался бы, мы не получили бы никаких сообщений об ошибках.
Данную настройку следует использовать только при разработке скрипта. При ее активации могут отображаться имена базы данных и таблиц, которые лучше скрыть в целях безопасности. В описанномвыше случае, когда вместо обычных скобок использовались фигурные, сообщение об ошибке выглядит так:
Fatal error: Uncaughtexception "PDOException" with message "SQLSTATE: Syntax error or accessviolation: 1064 You have an error in your SQL syntax; check the manualthatcorresponds to your MySQL server version for the rightsyntax to use near "{name, lastname, email} VALUES ("Thom", "Vial", "[email protected]")" at line 1"
Другие возможные проблемы:
После успешного ввода данных мы увидим, что они добавлены в базу данных. Ниже приведен пример таблицы, в которую добавили данные.
В этом уроке мы научимся вносить в базу данных MySql, данные введенные пользователем в форму. Вы узнаете, как соединяться с базой данных MySql из кода веб страницы, а также обрабатывать и вносить данные в базу.
В прошлом уроке я рассказала Вам о том, как установить Денвер на Ваш компьютер, как создать свою базу данных, пользователя для нее, как создать таблицу в базе данных и мы заполнили ее одной записью.
В этом уроке мы создадим html документ для ввода пользовательской информации, а также php файл-обработчик этой информации, который будет обрабатывать данные, соединяться с базой данных MySql и вставлять туда новые записи.
Переходя от слов к делу давайте начнем.
Первый этап: создаем html форму для ввода данных
С самого начала нам нужно подготовиться к работе с php, MySql и к тестированию написанного кода на локальном компьютере. Для этого:
1. Запустите Denwer на своем компьютере.
2. Откройте виртуальный диск, созданный Денвером (например у меня это диск “Z”). Откройте его, дальше: home – localhost – www – там создайте новую папку и дайте ей название (я дам название “db1”).
3. Если Вы работаете в Adobe Dreamweaver, то зайдите в менеджер сайтов, там нажмите на кнопку «New», в качестве пути выберите путь до только что созданной папки, в поле выше можете дать имя сайту, после этого нажмите Save – Done. После всего этого в правой панели Adobe Dreamweaver появится Ваша папка.
1. Сейчас мы создадим обычный html файл (назовем его info_form.html и сохраним в только что созданной папке db1) и пропишем там код формы для ввода информации. В нашей таблице users базы данных new_db есть 4 поля, которые мог бы заполнить пользователь (поле id будет заполняться автоматически). Исходя из этого можно создать код следующего вида:
Здесь в параметре «action» нашей формы прописан файл form.php . Он будет являться файлом обработчиком, который мы создадим далее.
Давайте еще создадим файл style.css для придания стилей нашей форме. Он уже подключен в коде, так что осталось только создать его, поместить в ту же папку, что и html файл и прописать в нем следующий код:
Body{width:400px; margin:0 auto; background:#F8F4B6;} label{display: block; float: left; width: 150px; padding: 0 10px; margin: 18px 0 0; text-align: right;} #submit{float:right; margin:5px 50px 10px 0;}
Теперь форма выглядит следующим образом:
Однако, если Вы введете данные и попытаетесь отправить форму, то увидите ошибку, так как никакого файла form.php, лежащего в каталоге scripts не существует.
Создать файл-обработчик – это наша следующая задача.
2. Давайте внутри папки db1 создадим папку с названием «scripts» . В ней мы будем сохранять все наши скрипты взаимодействия с базой данных MySql.
После того как папка будет создана, создайте новый php файл и сохраните его в папке scripts под именем form.php .
Но перед тем как заняться непосредственно файлом-обработчиком информации нужно сначала подключиться к нашей базе данных. Я предлагаю создать для этого отдельный файл и вот почему:
Скорее всего в Вашем проекте Вам придется соединяться с базой данных MySql не только из одного файла. Как правило с базой данных взаимодействуют различные файлы проекта.
Очень непрактично в каждом таком файле прописывать один и тот же код подключения к базе. А если таких файлов, например, будет 50 и в один прекрасный день вы смените пароль для пользователя и Вам придётся искать все эти 50 файлов и в каждом делать исправление.
Гораздо удобнее использовать для подключения отдельный файл, который будет подключен к каждому из файлов, где должно быть соединение с базой данных MySql. В таком случае вносить исправления нужно будет только в один файл.
Итак, давайте создадим новый php файл, назовем его connect.php и поместим в папку для скриптов. В нем пропишем код соединения с нашей базой данных MySql, а также код, который будет сообщать об ошибках в случае их возникновения. Обратите внимание, что в качестве параметров Вам необходимо будет прописать Ваше имя пользователя, Ваш пароль и Ваше имя базы данных. В качестве хоста должен быть localhost.
Ошибка подключения к базе данных! " . mysql_error() . "
"); mysql_select_db("new_db")//параметр в скобках ("имя базы, с которой соединяемся") or die("Ошибка выбора базы данных! ". mysql_error() . "
"); ?>Теперь перейдем в файл form.php и подключим в него файл connect.php с помощью следующего кода:
Если сейчас Вы попробуете отправить форму, то увидите после отправки пустую веб страницу. Это нормально, так как мы просто соединились с базой и пока больше ничего не выводим.
Если Вы увидели сообщение об ошибке, то проверьте правильность всех параметров (имя пользователя, пароль, имя хоста: localhos, имя базы данных), а также будьте уверены, что Ваш Денвер включен.
3. Мы удачно соединились с базой данных MySql, а теперь нам нужно принять введенные в форму данные в наш файл обработчик . В этом нам помогут атрибуты “name”, которые присутствуют в html документе.
Для получения данных мы воспользуемся специальной переменной php, снабжающей нас всей информацией из веб-формы. Эта переменная называется “$_REQUEST”.
Пропишите в файле form.php после подключения файла connect.php следующий код:
$first_name = $_REQUEST["first_name"]; $last_name = $_REQUEST["last_name"]; $email = $_REQUEST["email"]; $facebook = $_REQUEST["facebook"];
4. Данные в файл мы получили и занесли их в переменные. Теперь нужно отправить эти данные в нашу таблицу базы данных MySql . Для этого ниже нужно прописать следующий код:
$insert_sql = "INSERT INTO users (first_name, last_name, email, facebook)" . "VALUES("{$first_name}", "{$last_name}", "{$email}", "{$facebook}");"; mysql_query($insert_sql);
Здесь сначала мы формируем запрос, говоря, что нам нужно вставить соответствующие переменные в соответствующие поля таблицы “users”. Заносим этот запрос в переменную “$insert_sql”. А потом с помощью специальной функции mysql_query исполняем данный запрос.
Если сейчас Вы заполните и отправите форму, а потом посмотрите в таблицу “users” Вашей базы данных, то увидите новую запись, которая там появилась после отправки.
5. Мы вставили новую запись из веб страницы в таблицу базы данных MySql. Теперь хочется немного коснуться того формата, в котором вставляются наши данные.
Во-первых, нужно позаботиться о той ситуации, когда человек, заполняя форму может поставить ненужные пробелы в начале ввода информации. Их нужно обрезать.
Во-вторых, у нас существует поле для Facebook. Если мы в последующем захотим выводить эту информацию как ссылку, то необходимо позаботиться, чтобы данные в этом поле хранились в правильном формате (то есть «http://www.facebook.com/идентификатор на facebook»). Но пользователь не всегда будет вводить эти данные так как нам нужно. Он может ввести: “www.facebook.com/идентификатор на facebook”, “facebook.com/идентификатор на facebook” или просто “/идентификатор на facebook”.
Этих ситуаций нужно избегать. Для этого давайте подкорректируем наш код. Возможные лишние пробелы мы обрежем при помощи функции trim , а проверять правильность введенного url для facebook будет функция preg_match . Таким образом весь код файла form.php будет выглядеть следующим образом:
О функции preg_match
:
Это функция для поиска с регулярными выражениями.
Первый параметр в скобках – это регулярное выражение, второй – строка, где нужно искать.
Функция возвращает только первое совпадение: 0 – если совпадений нет, 1 – если совпадение есть.
Попробуйте теперь намеренно заполнить форму, сделав ненужные пробелы в начале заполнения какого-нибудь из полей и введя адрес для facebook без http:// или вообще введя только идентификатор facebook. Отправьте запрос, а потом перейдите в базу данных и Вы увидите, что несмотря на не совсем корректное заполнение, данные имеют именно тот вид, который нам нужен.
На этом буду заканчивать данный урок. Все файлы этого урока Вы можете скачать в исходниках (только не забудьте исправлять параметры на свои в файле connect.php).
А в следующем уроке мы научимся извлекать информацию из базы данных MySql, выбирать нужные записи и выводить их на экран. Чтобы не пропустить следующий урок подписывайтесь на обновления блога с помощью формы подписки, которую Вы видите ниже.
Оставляйте свои комментарии и делитесь с друзьями с помощью кнопок социальных сетей.
Успехов и до встречи в следующем уроке!