HTML form for insert users

PHP MySQL — INSERT INTO

After a database and its table(s) have been created, you can start adding data in them.
Some syntax rules:

  • In PHP, the SQL query must be quoted.
  • String values, inside the SQL query, must always be quoted.
  • Numeric values shouldn’t be quoted.
  • The word NULL must not be quoted.

Insert data into a MySQL table

To add new records to a MySQL table, use the INSERT INTO statement.
There are two ways that an INSERT query can be written:
1) The first method doesn’t specify the column names where the data will be inserted, only their values.
— Syntax :

INSERT INTO table_name VALUES (value1, value2, value3, . )

In this method, you must specify a value, even if it’s NULL, for every column. If there are five columns in the table, you must list five values.

2) The second form specifies both the column names and the values to be inserted:
— Syntax :

INSERT INTO table_name (column1, column2, column3. ) VALUES (value1, value2, value3. )

This method is generally preferable, you can add data only in the columns that matter. Any columns not given a value will be treated as NULL (or given a default value, if one was defined).
Note that if a column cannot have a NULL value (it was defined as NOT NULL) and does not have a default value, not specifying a value will cause an error.
If a column is AUTO_INCREMENT or TIMESTAMP, it’s no need to be specified in the SQL query becouse MySQL will automatically sets and adds the value.
To get PHP to execute the SQL statements, you must use the mysqli query() method.

Читайте также:  Javascript объединение ячеек таблицы

— The following example adds one new record to the «users» table. This example uses the «users» table created in the previous lesson, with five columns ( id , name , pass , email and reg_date ).
The » id » field is AUTO_INCREMENT, so it’s no need to be specified in the SQL query becouse MySQL will automatically adds the value for it. The same for » reg_date «, which is set TIMESTAMP.

 // sql query for INSERT INTO users $sql = "INSERT INTO `users` (`name`, `pass`, `email`) VALUES ('Marius', 'faith', 'name@domain.net')"; // Performs the $sql query on the server to insert the values if ($conn->query($sql) === TRUE) < echo 'users entry saved successfully'; >else < echo 'Error: '. $conn->error; > $conn->close(); ?>

— First, we create the mysqli object with the variable identifier $conn. Next, we build the SQL command string and save it to a variable called $sql. Then we call the query() method, and at the same time check its return value to determine if it was successful (true).
The example above adds a row into the «users» table, with value «Marius» in the «name» column, value «faith» in the «pass» field, and «name@domain.net» for «email». The values for the others columns («id» and «reg_date») are automatically added by MySQL server.

MySQL also allows you to insert multiple rows at one time, separating each record by a comma.
— Syntax :

INSERT INTO table_name (column1, column2, column3. ) VALUES (valueA1, valueA2, valueA3. ), (valueB1, valueB2, valueB3. ), (valueC1, valueC2, valueC3. )
 // sql query for INSERT INTO users (two rows) $sql = "INSERT INTO `users` (`name`, `pass`, `email`) VALUES ('MarPlo', 'peace', 'user@domain.net'), ('I_AM', 'love', 'address@domain.net')"; // Performs the $sql query on the server to insert the values if ($conn->query($sql) === TRUE) < echo 'users entry saved successfully'; >else < echo 'Error: '. $conn->error; > $conn->close(); ?>

Get the auto ID generated by INSERT

If you have a table with an AUTO_INCREMENT column that stores a numeric id, you can use the insert_id() method of the mysqli object to get the ID generated in the last INSERT operation.
— Example :

 // sql query for INSERT INTO users $sql = "INSERT INTO `users` (`name`, `pass`, `email`) VALUES ('PloMar ', 'love_light', 'a_name@domain.net')"; // Performs the $sql query and get the auto ID if ($conn->query($sql) === TRUE) < echo 'The auto ID is: '. $conn->insert_id; > else < echo 'Error: '. $conn->error; > $conn->close(); ?>

If the table does’t have a column with the AUTO_INCREMENT attribute or if the query wasn’t an INSERT or UPDATE statement, the insert_id() will return zero.

Insert data from a form into a database

HTML forms are very often used to send data to a server script. These data ca also be added into a database.
To insert data from a form into a MySQL database we need a HTML form and a PHP script that receives data from form.

Let’s create an HTML form and a PHP script that can be used to add new records to the «users» table.

The HTML form

      
Name:
Password:
E-mail:

When a user clicks on the «Send» button, the form data is sent to «insert.php» file.
The «insert.php» file:
— retrieves the values from the form with the PHP $_POST variables,
— filters these values with strip_tags() and trim() functions ( to remove tags and whitespace from the beginning and end ),
— uses a RegExp pattern and preg_match() function to check the «email» value to have a correct email address,
— if all data are correct, connects to a database with the mysqli object and store the values in an associative Array ($adds), escaping them with mysqli_real_escape_string() method,
— set the INSERT INTO statement, then, the query() method sends the SQL statement to MySQL and a new record will be added to the «users» table.

PHP code in the «insert.php» page

)$/'; // an e-mail address pattern // Check for form submission if (isset($_POST['name']) && isset($_POST['pass']) && isset($_POST['email'])) < // remove tags and whitespace from the beginning and end of form data $_POST = array_map("strip_tags", $_POST); $_POST = array_map("trim", $_POST); // chech if all form fields are filled in correctly // (email address and the minimum number of characters in "name" and "pass") if (!preg_match($regexp_mail, $_POST['email'])) $erors[] = 'Invalid e-mail address'; if (strlen($_POST['name'])<3) $erors[] = 'Name must contain minimum 3 characters'; if (strlen($_POST['pass'])<6) $erors[] = 'Password must contain minimum 6 characters'; // if no errors ($error array empty) if(count($erors)<1) < // connect to the "tests" database $conn = new mysqli('localhost', 'root', '', 'tests'); // check connection if (mysqli_connect_errno()) < exit('Connect failed: '. mysqli_connect_error()); >// store the values in an Array, escaping special characters for use in the SQL statement $adds['name'] = $conn->real_escape_string($_POST['name']); $adds['pass'] = $conn->real_escape_string($_POST['pass']); $adds['email'] = $conn->real_escape_string($_POST['email']); // sql query for INSERT INTO users $sql = "INSERT INTO `users` (`name`, `pass`, `email`) VALUES ('". $adds['name']. "', '". $adds['pass']. "', '". $adds['email']. "')"; // Performs the $sql query on the server to insert the values if ($conn->query($sql) === TRUE) < echo 'users entry saved successfully'; >else < echo 'Error: '. $conn->error; > $conn->close(); > else < // else, if errors, it adds them in string format and print it echo implode('
', $erors); > > else < echo 'No data from form'; >?>

Источник

Вставка данных в базу данных MySQL

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

Вставка данных в таблицу базы данных MySQL

После создания таблицы, следующим шагом будет ввод данных в таблицу. Чтобы ввести данные в таблицу, мы должны соблюдать определенные правила:

  • Если значение, которое нужно вставить, является строкой, мы должны заключить ее в кавычки.
  • Числовое значение нельзя заключать в кавычки.
  • NULL нельзя заключать в кавычки.
  • Если столбец в таблице имеет параметр AUTO_INCREMENT , то нам не нужно вставлять данные в этот столбец, т.к. данные будут вставляются автоматически.

Для вставки новых строк в таблицу базы данных используется оператор INSERT INTO .

Давайте сделаем SQL-запрос, используя оператор INSERT INTO с соответствующими значениями, после чего мы передадим его функции PHP mysqli_query() для вставки данных в таблицу.

Следующий пример вставляет новую строку в таблицу persons, указывая значения для полей first_name, last_name и email в трех различных версиях: с использованием синтаксиса объектно-ориентированной процедуры MySQLi, процедурный MySQLi и процедуры PDO.

Пример

 // Попытка выполнения запроса вставки $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', 'peterparker@mail.com')"; if(mysqli_query($link, $sql)) < echo "Записи успешно вставлены."; >else < echo "ERROR: Не удалось выполнить $sql. " . mysqli_error($link); >// Закрыть соединение mysqli_close($link); ?>
connect_error); > // Попытка выполнения запроса вставки $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', 'peterparker@mail.com')"; if($mysqli->query($sql) === true) < echo "Записи успешно вставлены."; >else< echo "ERROR: Не удалось выполнить $sql. " . $mysqli->error; > // Закрыть соединение $mysqli->close(); ?>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); > catch(PDOException $e)< die("ОШИБКА: не удалось подключиться. " . $e->getMessage()); > // Попытка выполнения запроса вставки try< $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', 'peterparker@mail.com')"; $pdo->exec($sql); echo "Записи успешно вставлены."; > catch(PDOException $e)< die("ERROR: Не удалось выполнить $sql. " . $e->getMessage()); > // Закрыть соединение unset($pdo); ?>

Примечание: Если столбец — это AUTO_INCREMENT (например, столбец «id»), то его не нужно указывать в запросе SQL. Этот модификатор сообщает MySQL автоматически присвоить значение этому полю.

Вставка нескольких строк в таблицу

Вы также можете вставить сразу несколько строк в таблицу с помощью одного запроса на вставку. Для этого включите в оператор INSERT INTO несколько списков значений столбцов, где значения столбцов для каждой строки должны быть заключены в круглые скобки и разделены запятыми.

В следующем примере вставим еще несколько строк в таблицу persons:

Пример

 // Попытка выполнения запроса вставки $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('John', 'Rambo', 'johnrambo@mail.com'), ('Clark', 'Kent', 'clarkkent@mail.com'), ('John', 'Carter', 'johncarter@mail.com'), ('Harry', 'Potter', 'harrypotter@mail.com')"; if(mysqli_query($link, $sql)) < echo "Записи успешно вставлены."; >else < echo "ERROR: Не удалось выполнить $sql. " . mysqli_error($link); >// Закрыть соединение mysqli_close($link); ?>
connect_error); > // Попытка выполнения запроса вставки $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('John', 'Rambo', 'johnrambo@mail.com'), ('Clark', 'Kent', 'clarkkent@mail.com'), ('John', 'Carter', 'johncarter@mail.com'), ('Harry', 'Potter', 'harrypotter@mail.com')"; if($mysqli->query($sql) === true) < echo "Записи успешно вставлены."; >else< echo "ERROR: Не удалось выполнить $sql. " . $mysqli->error; > // Закрыть соединение $mysqli->close(); ?>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); > catch(PDOException $e)< die("ERROR: Ошибка подключения. " . $e->getMessage()); > // Попытка выполнения запроса вставки try< $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('John', 'Rambo', 'johnrambo@mail.com'), ('Clark', 'Kent', 'clarkkent@mail.com'), ('John', 'Carter', 'johncarter@mail.com'), ('Harry', 'Potter', 'harrypotter@mail.com')"; $pdo->exec($sql); echo "Записи успешно вставлены."; > catch(PDOException $e)< die("ERROR: Не удалось выполнить $sql. " . $e->getMessage()); > // Закрыть соединение unset($pdo); ?>

Теперь перейдите в phpMyAdmin и проверьте данные таблицы persons внутри базы данных. Вы обнаружите, что значение столбца id присваивается автоматически путем увеличения значения предыдущего идентификатора на 1.

Вставка данных в таблицу БД

В MySQL каждая запись представляет собой полный запрос INSERT INTO , разделенный точкой с запятой.

Чтобы облегчить чтение синтаксиса, мы, в отличие от предыдущего примера, разбиваем его на отдельные запросы и добавляем их друг к другу с помощью оператора (.=) :

Пример

 $sql = "INSERT INTO Users (name, email) VALUES ('James Bond', 'bond@mail.com');"; $sql .= "INSERT INTO Users (name, email) VALUES ('John Wick', 'wick@mail.com');"; $sql .= "INSERT INTO Users (name, email) VALUES ('Ethan Hunt', 'hunt@mail.com')"; 

Поскольку точка с запятой является частью SQL-запроса, а не оператором PHP, мы добавляем ее в кавычки запроса.

Вставка данных в БД из HTML-формы

В предыдущем разделе мы узнали, как вставлять данные в базу данных из сценария PHP. Теперь посмотрим, как мы можем вставить данные в базу данных, полученную из HTML-формы. Давайте создадим HTML-форму, которую можно использовать для вставки новых записей в таблицу persons.

Создадим простую HTML-форма с тремя текстовыми полями и кнопкой отправки:

Пример

        

Получение и вставка данных формы

Когда пользователь нажимает кнопку отправки HTML-формы, в приведенном выше примере данные формы отправляются в файл-обработчик PHP ‘insert.php’. Файл ‘insert.php’ подключается к серверу базы данных MySQL, извлекает поля форм с использованием переменной PHP $_REQUEST и, наконец, выполняет запрос на вставку записей в БД.

Ниже приведен полный код нашего файла insert.php:

Пример

 // экранирует специальные символы в строке $first_name = mysqli_real_escape_string($link, $_REQUEST['first_name']); $last_name = mysqli_real_escape_string($link, $_REQUEST['last_name']); $email = mysqli_real_escape_string($link, $_REQUEST['email']); // Попытка выполнения запроса вставки $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')"; if(mysqli_query($link, $sql)) < echo "Записи успешно добавлены."; >else < echo "ERROR: Не удалось выполнить $sql. " . mysqli_error($link); >// Закрыть соединение mysqli_close($link); ?>
connect_error); > $first_name = $mysqli->real_escape_string($_REQUEST['first_name']); $last_name = $mysqli->real_escape_string($_REQUEST['last_name']); $email = $mysqli->real_escape_string($_REQUEST['email']); // Попытка выполнения запроса вставки $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')"; if($mysqli->query($sql) === true) < echo "Записи успешно вставлены."; >else< echo "ERROR: Не удалось выполнить $sql. " . $mysqli->error; > // Закрыть соединение $mysqli->close(); ?>
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); > catch(PDOException $e)< die("Ошибка подключения. " . $e->getMessage()); > // Попытка выполнения запроса вставки try< // Создать подготовленную выписку $sql = "INSERT INTO persons (first_name, last_name, email) VALUES (:first_name, :last_name, :email)"; $stmt = $pdo->prepare($sql); // Привязать параметры к оператору $stmt->bindParam(':first_name', $_REQUEST['first_name']); $stmt->bindParam(':last_name', $_REQUEST['last_name']); $stmt->bindParam(':email', $_REQUEST['email']); // Выполнить подготовленный оператор $stmt->execute(); echo "Записи успешно вставлены."; > catch(PDOException $e)< die("Ошибка вставки $sql. " . $e->getMessage()); > // Закрыть соединение unset($pdo); ?>

Примечание: Функция mysqli_real_escape_string() экранирует специальные символы в строке и создает допустимую строку SQL для защиты от атаки, при которой злоумышленник может внедрить или выполнить вредоносный код SQL.

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

Источник

Оцените статью