Mysql query insert

Я создаю базу данных, которые в основном принимают имя и идентификатор и строку ответа длиной 47, а мой PHP-код будет оценивать входящие результаты по предоставленно.
x44F; в базе данных. это информация о моей базе данных. имя базы данных – это маркировка, а таблица называется «ответ», которая содержит 5 полей.

1) answer_id :int , not null, auto increament. 2) name: text 3)id : text 4)answers : text 5)correct : int 

мой вопрос и проблема – это функция работает


  • userfunctions.php, почему я не могу добавить этот файл в Typo3 fileadmin /
  • Как получить время выполнения запроса MySQL из PHP?
  • Извлечь текст из DIV, который встречается на нескольких страницах на веб-сайте, а затем выводить на .txt?
  • Как очистить данные JSON, передаваемые через веб-сайты на целевом сайте

  • Будет ли значение набора $ _SERVER пустой строкой?
 // setup query $q = mysql_query("INSERT INTO `answer` VALUES (NULL,'$name', '$id','$answers','$correct')"); // run query $result = mysql_query($q); 

или по-другому, ничего не хранится в моей базе данных ???

Заранее спасибо.

это вся программа.

 <?php error_.    
= "abcfdbbjca"; $correct = 0; for($i=0;$i<strlen($answer_key);$i++) { if($answer_key[$i] == $answers[$i]) $correct++; } // Setup query $q = mysql_query("INSERT INTO `answer` VALUES ('$name', '$id','$answers','$correct')"); $result = mysql_query($q); print 'Thnak you. You got' + $correct + 'of 10 answers correct'; ?>

ruphp.com

Inserting Data into a MySQL Database Table

Now that you’ve understood how to create database and tables in MySQL. In this tutorial you will learn how to execute SQL query to insert records into a table.

The INSERT INTO statement is used to insert new rows in a database table.

Let’s make a SQL query using the INSERT INTO statement with appropriate values, after that we will execute this insert query through passing it to the PHP mysqli_query()
function to insert data in table. Here’s an example, which insert a new row to the persons table by specifying values for the first_name, last_name and email fields.

If you remember from the preceding chapter, the id field was marked with the AUTO_INCREMENT flag. This modifier tells the MySQL to automatically assign a value to this field if it is left unspecified, by incrementing the previous value by 1.


Inserting Multiple Rows into a Table

You can also insert multiple rows into a table with a single insert query at once. To do this, include multiple lists of column values within the INSERT INTO statement, where column values for each row must be enclosed within parentheses and separated by a comma.

Let’s insert few more rows into the persons table, like this:

Now, go to phpMyAdmin (http://localhost/phpmyadmin/) and check out the persons table data inside demo database. You will find the value for the id column is assigned automatically by incrementing the value of previous id by 1.


Insert Data into a Database from an HTML Form

In the previous section, we have learned how to insert data into database from a PHP script. Now, we’ll see how we can insert data into database obtained from an HTML form. Let’s create an HTML form that can be used to insert new records to persons table.

Step 1: Creating the HTML Form

Here’s a simple HTML form that has three text <input>
fields and a submit button.

Step 2: Retrieving and Inserting the Form Data

When a user clicks the submit button of the add record HTML form, in the example above, the form data is sent to ‘insert.php’ file. The ‘insert.php’ file connects to the MySQL database server, retrieves forms fields using the PHP $_REQUEST variables and finally execute the insert query to add the records. Here is the complete code of our ‘insert.php’ file:

In the next chapter we will extend this insert query example and take it one step further by implementing the prepared statement for better security and performance.

This is very basic example of inserting the form data in a MySQL database table. You can extend this example and make it more interactive by adding validations to the user inputs before inserting it to the database tables. Please check out the tutorial on PHP form validation to learn more about sanitizing and validating user inputs using PHP.

www.tutorialrepublic.com

Inserting Data from the Command Prompt

To insert data from the command prompt, we will use SQL INSERT INTO command to insert data into MySQL table tutorials_tbl.


Example

The following example will create 3 records into tutorials_tbl table −

 root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed  mysql> INSERT INTO tutorials_tbl   ->(tutorial_title, tutorial_author, submission_date)  ->VALUES  ->("Learn PHP", "John Poul", NOW()); Query OK, 1 row affected (0.01 sec)  mysql> INSERT INTO tutorials_tbl  ->(tutorial_title, tutorial_author, submission_date)  ->VALUES  ->("Learn MySQL", "Abdul S", NOW()); Query OK, 1 row affected (0.01 sec)  mysql> INSERT INTO tutorials_tbl  ->(tutorial_title, tutorial_author, submission_date)  ->VALUES  ->("JAVA Tutorial", "Sanjay", '2007-05-06'); Query OK, 1 row affected (0.01 sec) mysql> 

NOTE − Please note that all the arrow signs (->) are not a part of the SQL command. They are indicating a new line and they are created automatically by the MySQL prompt while pressing the enter key without giving a semicolon at the end of each line of the command.

In the above example, we have not provided a tutorial_id because at the time of table creation, we had given AUTO_INCREMENT option for this field. So MySQL takes care of inserting these IDs automatically. Here, NOW() is a MySQL function, which returns the current date and time.

Inserting Data Using a PHP Script


You can use the same SQL INSERT INTO command into the PHP function mysql_query() to insert data into a MySQL table.

Example

This example will take three parameters from the user and will insert them into the MySQL table −

 <html>   <head>  <title>Add New Record in MySQL Database</title>  </head>   <body>  <?php  if(isset($_POST['add'])) {  $dbhost = 'localhost:3036';  $dbuser = 'root';  $dbpass = 'rootpassword';  $conn = mysql_connect($dbhost, $dbuser, $dbpass);    if(! $conn ) {  die('Could not connect: ' . mysql_error());  }   if(! get_magic_quotes_gpc() ) {  $tutorial_title = addslashes ($_POST['tutorial_title']);  $tutorial_author = addslashes ($_POST['tutorial_author']);  } else {  $tutorial_title = $_POST['tutorial_title'];  $tutorial_author = $_POST['tutorial_author'];  }   $submission_date = $_POST['submission_date'];    $sql = "INSERT INTO tutorials_tbl ".  "(tutorial_title,tutorial_author, submission_date) "."VALUES ".  "('$tutorial_title','$tutorial_author','$submission_date')";  mysql_select_db('TUTORIALS');  $retval = mysql_query( $sql, $conn );    if(! $retval ) {  die('Could not enter data: ' . mysql_error());  }    echo "Entered data successfullyn";  mysql_close($conn);  } else {  ?>    <form method = "post" action = "<?php $_PHP_SELF ?>">  <table width = "600" border = "0" cellspacing = "1" cellpadd.    
type = "text" id = "submission_date"> </td> </tr> <tr> <td width = "250"> </td> <td> </td> </tr> <tr> <td width = "250"> </td> <td> <input name = "add" type = "submit" id = "add" value = "Add Tutorial"> </td> </tr> </table> </form> <?php } ?> </body> </html>

While doing a data insert, it is best to use the function get_magic_quotes_gpc() to check if the current configuration for magic quote is set or not. If this function returns false, then use the function addslashes() to add slashes before the quotes.

You can put many validations around to check if the entered data is correct or not and can take the appropriate action.


www.tutorialspoint.com

Введение

В первой части, основы MySQL и PHP, мы научились подключаться серверу MySQL, выбирать базу данных для работы, узнали PHP-функцию отправки запросов серверу MySQL, узнали два простейших запроса (создание и удаление таблицы), ну и узнали как закрывать соединение.

Теперь мы будем более глубоко изучать запросы MySQL. Итак, приступим!

Создание таблицы — CREATE TABLE


Сейчас у нас пустая база данных, в ней нет таблиц. Поэтому сначала создадим таблицу. Мы уже знаем как это делать из первой части.

Вот код скрипта, который создаст нужную нам табличку:

$link = mysqli_connect('localhost', "root", '', 'tester'); if ( !$link ) die("Error");  $query = 'CREATE TABLE users(  login VARCHAR(20),  password VARCHAR(20) )';  if (mysqli_query($link, $query)) echo "Таблица создана."; else echo "Таблица не создана: ".mysqli_error();  mysqli_close($link);

В нашей таблице только два поля: логин и пароль. Пока что нам больше не нужно, не будем усложнять процесс.

Итак, таблица создана.

Добавление строк (записей) в таблицу — INSERT

Добавить новую строку в таблицу можно при помощи SQL команды insert. Вот пример:

$link = mysqli_connect( 'localhost', "root", '', 'tester' ); if ( !$link ) die( "Error" );  $query = "INSERT INTO users (login, password) VALUE ('zeus', 'pass123')";  if ( mysqli_query($link, $query) ) echo "Пользователь добавлен."; else echo "Пользователь не добавлен: " . mysqli_error();  mysqli_close( $link );

SQL запрос состоит из команды INSERT INTO, имени базы данных users, затем в скобках идут имена полей, потом слово VALUE, после которого в скобках следуют добавляемые значения. Значения берутся в кавычки.

Синтаксис запроса выглядит так:

INSERT INTO имя_таблицы (столбец1, столбец2) VALUE ('х1', 'х2')

Кавычки во вторых скобках обязательны.

На месте значений могут быть переменные. Вот пример:

$link = mysqli_connect( 'localhost', "root", '', 'tester' ); if ( !$link ) die( "Error" );  $login = 'zeus'; $password = 'pass123'; $query = "INSERT INTO users (login, password) VALUE ('$login', '$password')";  if ( mysqli_query($link, $query) ) echo "Пользователь добавлен."; else echo "Пользователь не добавлен: " . mysqli_error();  mysqli_close( $link );

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

Существует быстрый способ вставки нескольких строк одним запросом INSERT:

INSERT INTO users (login, password) VALUE ('bob', 'eee333'), ('Rooki', '12345'), ('magy', 'olol88e8')

Как видим, перечисляемые данные просто отделены запятыми.

Итак, при помощи команды INSERT мы научились добавлять записи в таблицу. Идём дальше.

Просмотр таблицы: команда SELECT

Теперь у нас есть таблица users, в которой есть строки. Прошлый скрипт можно запустить несколько раз, и каждый раз он будет добавлять строку в таблицу. Теперь мы можем не знать, сколько у нас строк в таблице. А хочется знать что у нас в ней записано.

Для получения данных из таблицы используется SQL-команда SELECT. Знак * обозначает что мы запрашиваем все данные, затем после слова FROM пишем имя таблицы, из которой хотим получить данные.

Запросим все данные из таблицы users:

$link = mysqli_connect( 'localhost', "root", '', 'tester' ); if ( !$link ) die("Error");  $query = "SELECT * FROM users";  $result = mysqli_query( $link, $query );  if ( !$result ) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены";  mysqli_close( $link );

Функция mysqli_query() вернула нам идентификатор результата запроса — мы его помещаем в переменную и в дальнейшем будем работать с ним при помощи других функций PHP.

Число записей в запросе

Давайте определим сколько строк в нашем запросе? Я вот запустил скрипт добавления записи в таблицу сам не помню сколько раз и теперь не знаю сколько строк в моей таблице.

Для определения числа строк в результате запроса используют функцию mysqli_num_rows(). Этой функции передаётся идентификатор результата запроса, а вернёт она число записей.

$link = mysqli_connect( 'localhost', "root", '', 'tester' ); if ( !$link ) die("Error");  $query = "SELECT * FROM users";  $result = mysqli_query( $link, $query );  if ( !$result ) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены";  $count = mysqli_num_rows($result); echo "Всего строк в таблице: $count.";  mysqli_close($link);

Если нам нужно узнать число записей в таблице, то приведённый способ не самый подходящий. Тут мы узнали число записей, найденных в запросе, но число записей в таблице ищется по другому.

Число записей в таблице SELECT COUNT(*)

Чтобы узнать число записей в таблице можно воспользоваться командой SELECT COUNT(*) FROM имя_таблицы.

$link = mysqli_connect('localhost', "root", ''); if ( !$link ) die("Error");  mysqli_select_db('tester');  $query = "SELECT * FROM users"; $result = mysqli_query( $link, $query );  if ( !$result ) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены. ";  $count	= mysqli_fetch_row($result); echo "Всего строк в таблице: $count[0].";  mysqli_close($link);

Обратите внимание, тут мы использовали новую функцию PHP mysqli_fetch_row() для получения данных. Эта функция возвращает ряд результата запроса в форме простого массива, в нашем случае в ряду одно поле и оно имеет индес 0.

Просмотр результата запроса в цикле

После выполнения SQL-запроса с командой SELECT и получения идентификатора результата запроса, PHP создаёт в наборе записей результата внутренний указатель. Этот указатель автоматически перемещается на следующую запись, после обращения к текущей записи. Благодаря этому механизму набор результа запроса SELECT очень удобно просматривать в цикле.

В PHP есть несколько функций, при помощи которых можно дла каждой строки результирующего запроса получить массив, состоящий из её полей. Для примера возьмём функцию mysqli_fetch_row(). Этой функции передают идентификатор запроса, а возвращает она массив. Так в цикле просматривается весь результат запроса, по достижению конца результата запроса функция вернёт false.

Итак, запрашиваем все данные из таблицы users (SELECT * FROM users).

$link = mysqli_connect( 'localhost', "root", '' ); if ( !$link ) die("Error");  mysqli_select_db( 'tester' );  $result = mysqli_query( $link, "SELECT * FROM users" );  if ( !$result ) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены.<br>";  while ( $row = mysqli_fetch_row($result) ) {  echo "Логин: $row[0]. Пароль: $row[1].<br>"; }  mysqli_close($link);

Функция mysqli_fetch_row() возвращает простой массив. В каждой итерации цикла мы получим массив с строкой из таблицы, доступ к полям которой мы можем получить указав числовой индекс.

То же самое можно сделать используя функцию mysql_fetch_assoc(), она возвращает ассоциативный массив.

$link = mysqli_connect( 'localhost', "root", '' ); if ( !$link ) die("Error");  mysqli_select_db( 'tester' );  $result = mysqli_query( $link, "SELECT * FROM users" );  if ( !$result ) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены.<br>";  while ( $row = mysqli_fetch_assoc($result) ) {  echo "Логин: $row[login]. Пароль: $row[password].<br>"; }  mysqli_close($link);

Также есть функции mysqli_fetch_array() — возвращает любой тип массива, и mysqli_fetch_object() — возвращает объект.

Запрос SELECT DISTINCT — уникальные значения полей

Давайте создадим новую таблицу:

$link = mysqli_connect( 'localhost', "root", '' ); if ( !$link ) die("Error");  mysqli_select_db( 'tester' );  // удаляем существующую таблицу mysqli_query($link, "DROP TABLE users");  // создаём новую таблицу $query = 'CREATE TABLE users(  name	VARCHAR(20),  surname	VARCHAR(20),  age	 TINYINT UNSIGNED )'; if ( mysqli_query($link, $query) ) echo "Таблица создана.<br>"; else echo "Таблица не создана: " . mysqli_error();   // функция для добавления записей в таблицу function add_new_line($link, $query) {  if ( !mysqli_query($link, $query) ) echo "Пользователь не добавлен: " . mysqli_error(); }   // добавляем записи add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ('Max', 'Jayson', '33')"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ('Bob', 'Freeman', '26')"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ('Sara', 'Lopes', '65')"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ('Serg', 'Pupin', '29')"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ('Serg', 'Borman', '43')"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ('Max', 'Lopes', '21')");   // выводим содержание таблицы в браузер $result	= mysqli_query( $link, "SELECT * FROM users");  if ( !$result ) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены.<br>";  while ( $row = mysqli_fetch_assoc($result) ) {  echo "Имя: $row[name]. Фамилия: $row[surname]. Возраст: $row[age].<br>"; }  mysqli_close($link);

Итак, мы имеем новую, более сложную таблицу с уникальными записями. Сейчас давайте посмотрим, сколько у нас имён в базе данных.

$link = mysqli_connect( 'localhost', "root", ''); if ( !$link ) die("Error");  mysqli_select_db( 'tester' );  $result = mysqli_query($link, "SELECT DISTINCT name FROM users");  echo "Всего имён: " . mysqli_num_rows($result)."<br>";  echo "Список имён:<br>"; while ( $name = mysqli_fetch_row($result) ) {  echo "$name[0]<br>"; }  mysqli_close($link);

SQL-запрос «SELECT DISTINCT name FROM users» вернул результат со всеми уникальными именами в нашей таблице. Каждое уникальное имя в новой строке результата запроса.

Сортировка результата — ORDER BY

Добавив в SQL-запрос команду ORDER BY мы сортируем результат запроса по возрастанию (цифры и буквы по алфавиту). Вот пример, в котором можно сравнить обычный запрос и отсортированный по возрасту (поле age).

$link = mysqli_connect( 'localhost', "root", '' ); if ( !$link ) die("Error");  mysqli_select_db( 'tester' );  echo "Содержание таблицы:<br>"; $result = mysqli_query($link, "SELECT * FROM users");  while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }   echo "Сортируем по возрасту:<br>"; $result = mysqli_query($link, "SELECT * FROM users ORDER BY age");  while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }  mysqli_close($link);

Можете заменить поле age в команде ORDER BY на поле name и посмотреть результат.

Чтобы сортировать результат запроса в обратном порядке используйте команду ORDER BY age DESC.

Соответствие условию — WHERE

Добавив в SQL-запрос команду WHERE мы запросим только те записи, которые соответствуют условию. Например, сделаем запрос на людей младше 30 лет.

Для этого используем SQL-запрос «SELECT * FROM users WHERE age<30".

$link = mysqli_connect( 'localhost', "root", '' ); if ( !$link ) die("Error");  mysqli_select_db( 'tester' );  echo "Люди младше 30:<br>"; $result = mysqli_query( $link, "SELECT * FROM users WHERE age<30" ); while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }  mysqli_close($link);

Также мы можем сразу отсортировать результат по возрастанию age:
"SELECT * FROM users WHERE age<30 ORDER BY age".

Если мы сделаем запрос "SELECT name FROM users WHERE age<30 ORDER BY age", то в результате нам вернут только значения поля "name", но они также будут отсортированы по age.

Мы можем запросить значения двух полей: "SELECT name, age FROM users WHERE age<30 ORDER BY age".

Теперь запросим все пользователей, с именем "Max".

$link = mysqli_connect( 'localhost', "root", '' ); if ( !$link ) die("Error");  mysqli_select_db( 'tester' );  echo "Все Максы:<br>"; $result = mysqli_query( $link, "SELECT * FROM users WHERE name='Max'" ); while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }  mysqli_close($link);

И ещё пример запроса , — выберет только имена (name) из таблицы users, все кроме Max.

SELECT name FROM users WHERE name!='Max'

На этом с запросом WHERE всё.

Ограничение записей — LIMIT

Добавив в SQL-запрос команду LIMIT мы ограничим размер результата.

Запрос, который выводит первые три записи: "SELECT * FROM users LIMIT 3". Давайте посмотрим как он работает:

$link = mysqli_connect( 'localhost', "root", '' ); if ( !$link ) die("Error");  mysqli_select_db( 'tester' );  echo "Содержание таблицы:<br>"; $result = mysqli_query($link, "SELECT * FROM users"); while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }  echo "<br><br>Первые три записи:<br>"; $result = mysqli_query( $link, "SELECT * FROM users LIMIT 3" ); while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }  echo "<br><br>Вторые три записи:<br>"; $result = mysqli_query( $link, "SELECT * FROM users LIMIT 3, 3" ); while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }  mysqli_close($link);

Также тут мы использовали запрос: "SELECT * FROM users LIMIT 3, 3". Вторая тройка указывает смещение в результате запроса.

Соответствие шаблону — LIKE

Язык SQL поддерживает простые шаблоны. Для этого используется команда LIKE и шаблон задаётся с использованием символа %.

Вот пример запроса, который вернёт все записи с именами, начинающимися на букву S.

SELECT * FROM users WHERE name LIKE 'S%'

Тестирую запрос:

$link = mysqli_connect( 'localhost', "root", '' ); if ( !$link ) die("Error");  mysqli_select_db( 'tester' );  echo "Содержание таблицы:<br>"; $result = mysqli_query( $link, "SELECT * FROM users" ); while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }  echo "<br><br>Имена на букву S:<br>"; $result = mysqli_query( $link, "SELECT * FROM users WHERE name LIKE 'S%'" ); while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }  mysqli_close($link);

Вот пример запроса, который вернёт все записи с фамилиями, заканчивающимися на букву s.

SELECT * FROM users WHERE name LIKE '%s'

Соответствие условию — IN

Этот запрос с использованием команды IN вернёт только те строки, которые строго соответствую условию.

Например, нас интересуют люди с возрастом 21, 26 и 33 года.

SELECT * FROM users WHERE age IN (21,26,33)

Тестирую запрос:

$link = mysqli_connect( 'localhost', "root", '' ); if ( !$link ) die("Error");  mysqli_select_db('tester');  echo "Содержание таблицы:<br>"; $result = mysqli_query( $link, "SELECT * FROM users" ); while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }  echo "<br><br>Люди, с требуемыми возрастами (21, 26, 33):<br>"; $result = mysqli_query( $link, "SELECT * FROM users WHERE age IN (21, 26, 33)" ); while ( $line = mysqli_fetch_row($result) ) {  echo "Имя: $line[0]. Фамилия: $line[1]. Возраст: $line[2].<br>"; }  mysqli_close($link);

Максимальное и минимальное значение в столбце

Выбирает максимальное значение age в таблице users.

SELECT max(age) FROM users

Следующий запрос выбирает данные из таблицы users по полям name и age где age принимает минимальное значение.

SELECT name, min(age) FROM users

Обновление записи — UPDATE

Давайте Max Lopes установим возраст 15 лет. Это делается запросом MySQL:

UPDATE users SET age='15' WHERE name='Max' AND surname='Lopes'

Обратите внимание на новую команду AND (and — по английски значит "и") в запросе. Если мы не уточним фамилию, то возраст 15 лет будет установлен всем Максам в таблице.

Одним запросом можно обновить два и более полей в одной строке. Делается это следующим образом:

UPDATE users SET age = '18', surname = 'Coocker' WHERE id = '3'

В нашей таблице нет поля id, так что этот запрос не сработает на ней. Но это поле, содержащее уникальные номера строк, мы обязательно выучим.

Удалить запись — DELETE

Запрос к базе данных MySQL для удаления записи:

DELETE FROM users WHERE id = '10'

Опять же, в нашей таблице нет поля id. Но мы можем удалить из неё всех людей, младше 18 лет.

DELETE FROM users WHERE age < '18'

Удалить таблицу — DROP TABLE

Запрос к базе данных MySQL который удаляет целиком таблицу users:

DROP TABLE users

Удалить столбец — ALTER TABLE ... DROP ...

Иногда может потребоваться удалить столбец из таблицы, давайте например удалим из users столбец age:

ALTER TABLE users DROP age

Этот запрос MySQL удалил столбец окончательно и безвозвратно.

Добавить столбец — ALTER TABLE ... ADD ...

Иногда может потребоваться добавить столбец в существующую таблицу, давайте например снова добавим в таблицу users столбец age:

ALTER TABLE users ADD age TINYINT UNSIGNED

Этот запрос MySQL добавил столбец age с типом данных TINYINT UNSIGNED.

Переименование столбца — ALTER TABLE ... CHANGE ...

Иногда может потребоваться переименовать столбец, например столбец age переименовать в vozrast. Делаем это так:

ALTER TABLE users CHANGE age vozrast TINYINT UNSIGNED

Этот запрос MySQL переименовал столбец age в vozrast с типом данных TINYINT UNSIGNED.

Переименование таблицы — RENAME TABLE ... TO ...

Иногда может потребоваться переименовать таблицу:

RENAME TABLE users TO peoples

Удаление базы данных — DROP DATABASE

Этот запрос может удалить базу данных с имененм tester:

DROP DATABASE tester

У меня на денвере этот запрос работает, но на хостинге может и не сработать, если у пользователя базы данных нет прав на выполнение удаления.

Создание базы данных — CREATE DATABASE

Этот запрос создаёт базу данных с имененм tester:

CREATE DATABASE tester

У меня на денвере этот запрос работает, но на хостинге может и не сработать, если у пользователя базы данных нет прав на выполнение удаления.

Итоги

Итак, в этой части мы ознакомились с запросами к MySQL. Многие из рассмотренных нами запросов нам не часто пригодятся в процессе работы, но знать их нужно, так как они точно пригодятся в процессе разработки скриптов.

Некоторые запросы обычно делают только из phpMyAdmin (создание и удаление баз данных например).

В работе сайтов обычно нужно добавить запись в таблицу, редактировать запись или удалить запись из таблицы.

Следующим шагом будет изучение типов данных в MySQL.

komotoz.ru

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.

- 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.

 <?php // connect to the "tests" database $conn = new mysqli('localhost', 'root', 'pass', 'tests');  // check connection if (mysqli_connect_errno()) {  exit('Connect failed: '. mysqli_connect_error()); }  // 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,...)

The following example adds two new rows to the "users" table, with one query.

 <?php // connect to the "tests" database $conn = new mysqli('localhost', 'root', '', 'tests');  // check connection if (mysqli_connect_errno()) {  exit('Connect failed: '. mysqli_connect_error()); }  // 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:

 <?php // connect to the "tests" database $conn = new mysqli('localhost', 'root', 'pass', 'tests');  // check connection if (mysqli_connect_errno()) {  exit('Connect failed: '. mysqli_connect_error()); }  // 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(); ?> 

Output:

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

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head>  <title>HTML form for insert users</title> </head> <body>  <form action="insert.php" method="post">  Name: <input type="text" name="name" /><br />  Password: <input type="text" name="pass" /><br />  E-mail: <input type="text" name="email" /><br />  <input type="submit" value="Send" /> </form>  </body> </html> 

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

 <?php $erors = array(); // set an empty array that will contains the errors $regexp_mail = '/^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@([a-zA-Z0-9-]+.)+[a-zA-Z]{2,4})$/'; // 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('<br />', $erors);  } } else {  echo 'No data from form'; } ?> 

coursesweb.net

Inserting a Single Row

Following PHP script shows how to insert a single row into a database table.

<?php  /* Change database details according to your database */ $dbConnection = mysqli_connect('localhost', 'robin', 'robin123', 'company_db');  $firstName = "Robin"; $lastName = "Jackman";  $query = "INSERT INTO `employee` (`first_name`, `last_name`) VALUES ('$firstName', '$lastName')";  if (mysqli_query($dbConnection, $query)) {  echo "Successfully inserted " . mysqli_affected_rows($dbConnection) . " row"; } else {  echo "Error occurred: " . mysqli_error($dbConnection); }  ?> 
  • Query is enclosed with double quotes. This is to include variables inside the query. If you used single quotes, including variables is not possible.
  • There is no semicolon at the end of query (after last right parenthesis) as when you run insert statement in command-line or in a GUI tool. There is a semicolon at the end of line which ends the PHP expression.
  • Make sure single quotes are present around string values. If you had following statement (no single quotes around $firstName and $lastName), it would throw an error.
$query = "INSERT INTO `employee` (`first_name`, `last_name`) VALUES ($firstName, $lastName)"; 

Inserting Multiple Rows

Inserting multiple rows involves bit of iterating for generating the value part of the statement.

<?php  /* Change database details according to your database */ $dbConnection = mysqli_connect('localhost', 'robin', 'robin123', 'company_db');  $employees[0]['first_name'] = 'Robin'; $employees[0]['last_name'] = 'Jackman'; $employees[0]['job_title'] = 'Software Engineer'; $employees[0]['salary'] = 5500;  $employees[1]['first_name'] = 'Taylor'; $employees[1]['last_name'] = 'Edward'; $employees[1]['job_title'] = 'Software Architect'; $employees[1]['salary'] = 7200;  $employees[2]['first_name'] = 'Vivian'; $employees[2]['last_name'] = 'Dickens'; $employees[2]['job_title'] = 'Database Administrator'; $employees[2]['salary'] = 6000;  $query = "INSERT INTO `employee` (`first_name`, `last_name`, `job_title`, `salary`) VALUES ";  $count = count($employees);  for ($i=0; $i<$count; $i++) {   $query .= "('{$employees[$i]['first_name']}', '{$employees[$i]['last_name']}', '{$employees[$i]['job_title']}', {$employees[$i]['salary']})";   /* If not last iteration, add a comma and a space */  if ($i < ($count - 1)) {  $query .= ", ";  }  }  if (mysqli_query($dbConnection, $query)) {  echo "Successfully inserted " . mysqli_affected_rows($dbConnection) . " rows"; } else {  echo "Error occurred: " . mysqli_error($dbConnection); }  ?> 
  • First part of the INSERT statement is assigned to $query and value part is generated by a for loop and append to $query by string concatenation.
  • Curly brackets are used around array elements since otherwise it will lead to a syntax error (If you want to use array elements and method calls inside an expression enclosed with double quotes, you need to use curly brackets).
  • Salary values are not enclosed with single quotes since they are numerical values (If you wish, you can enclose numerical values with single quotes too).
  • As described in multiple inserts, except for last value segment, you need to add a comma after every other segment. if condition is used for this purpose.

www.phpknowhow.com

<?php
// This could be supplied by a user, for example
$firstname 'fred';
$lastname  'fox';

// Formulate Query
// This is the best way to perform an SQL query
// For more examples, see mysql_real_escape_string()
$query sprintf("SELECT firstname, lastname, address, age FROM friends 
    WHERE firstname='%s' AND lastname='%s'"
,
    
mysql_real_escape_string($firstname),
    
mysql_real_escape_string($lastname));

// Perform Query
$result mysql_query($query);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
    
$message  'Invalid query: ' mysql_error() . "n";
    
$message .= 'Whole query: ' $query;
    die(
$message);
}

// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row mysql_fetch_assoc($result)) {
    echo 
$row['firstname'];
    echo 
$row['lastname'];
    echo 
$row['address'];
    echo 
$row['age'];
}

// Free the resources associated with the result set
// This is done automatically at the end of the script
mysql_free_result($result);
?>

php.net

Как сделать выборку из базы данных. Оператор выборки SELECT

Перед тем как производить выборку из базы данных, первым делом нужно подключиться к MySQL серверу и выбрать базу данных для работы. Как вы уже знаете из предыдущей статьи рубрики «Уроки PHP и MySQL», делается это следующим образом.

После соединения с MySQL сервером и выбора базы данных можно приступить непосредственно к выборке из БД. Для примера возьмем базу данных, которую мы создавали в предыдущей статье. Напомню, что была создана база данных с именем db_name и одной таблицей first_table, в которой было всего три поля: id (идентификатор), name (имя), last_name (фамилия). Для того чтобы произвести выборку из базы данных можно использовать функцию mysql_query(), которая в данном случае имеет следующий синтаксис.

где, $db – идентификатор подключения.

Если говорить простыми словами, то данный код расшифровывается как «ВЫБРАТЬ поля (перечисляем названия через запятую) ИЗ таблицы (указываем имя таблицы БД) ГДЕ выполняется условие (прописываем условие)». Как видите синтаксис функции очень простой, а сам код похож на обычный человеческий язык.

Поскольку функция mysql_query() возвращают результат, то его нужно поместить в какую-то переменную для дальнейшего использования, например, в переменную $result.

Теперь результат выполнения функции mysql_query() хранится в переменной $result и может быть использован, например, для формирования массива и вывода результатов на экран. Более подробно об этом мы поговорим чуть позже, ну а пока перейдем к примерам. В качестве базы данных для примера будем использовать базу db_name из предыдущей статьи.

Итак, если нужно вытащить все поля из базы данных используем следующий код.

Звездочка означает, что нужно вытащить все поля из таблицы.

Если нужно вытащить только некоторые поля, например, имя и фамилию.

name, last_name – поля с именами и фамилиями пользователей.

Если нужно получить точные данные, например, фамилию всех пользователей в базе данных с определенным именем (имя будет занесено в переменную $name).

name=’$name’ – поле name равняется переменной $name.

Кроме одного условия мы также можем перечислить несколько, например, нужно получить идентификатор всех пользователей с определенным именем и фамилией (имя и фамилия будут занесены в переменные $name и $last_name соответственно). Для этого можем использовать следующий код.

Если же нам нужно получить записи, где выполняется одно условие из нескольких, например, получить идентификаторы всех пользователей у которых имя или фамилия отвечают заданным в условиях.

Если вам нужно отсортировать результат по каким-то параметрам, например, по имени.

ORDER BY name – отсортировать по имени.

Если нужно отсортировать в обратном порядке.

DESC – в обратном порядке.

Если нужно вытащить только определенное количество полей из базы данных. К примеру, нужно вытащить первые пять полей.

LIMIT 5 – вытащить из БД только первые пять результатов.

Это были небольшие примеры выборки из базы данных. Теперь давайте рассмотрим, как преобразовать полученный результат в массив для дальнейшего использования, например, для вывода результата на экран. Для этого в PHP существует специальная функция PHP mysql_fetch_array().

Результат выполнения функции мы можем поместить в переменную, например, переменную $myrow, которая будет хранить в себе ассоциативный массив. В качестве параметра функции mysql_fetch_array() будет передан результат выполнения функции mysql_query(). Все это будет выглядеть следующим образом.

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

Как видите все очень просто и понятно.

Ну а теперь перейдем к следующему оператору INSERT, который отвечает за добавление информации в базу данных.

Добавление информации в базу данных. Оператор INSERT

Оператор INSERT применяется для добавления информации в базу данных. Код, отвечающий за добавление, имеет следующий синтаксис.

Данный код можно было бы прочитать как «ВСТАВИТЬ В таблицу (имя таблицы) в поля (названия полей через запятую) ЗНАЧЕНИЯ (перечисляем значения через запятую)».

Например, нам нужно добавить в таблицу first_table имя и фамилию нового пользователя. Для этого можно использовать следующий код.

Где, $name и $last_name – переменные с именем и фамилией нового пользователя.

Для того чтобы проверить результат можно использовать конструкцию if – else.

Другими словами, если в переменную $result попадет истина, то выведется сообщение, что запись добавлена. В противном случае выведется, что запись в базу данных не добавлена.

Обновление информации в базе данных. Оператор UPDATE

Оператор UPDATE применяется для обновления уже существующей информации в базе данных. Синтаксис функции mysql_query в данном случае следующий.

Теперь перейдем к примеру. Допустим нам нужно изменить имя и фамилию для пользователя с идентификатором $id в таблице db_name. Для этого можно использовать следующий код.

Теперь давайте перейдем к заключительной части статьи и рассмотрим последний оператор DELETE, который отвечает за удаление информации из базы данных.

Удаление информации из базы данных. Оператор DELETE

Оператор DELETE применяется для удаления полей из базы данных. Синтаксис функции mysql_query() в данном случае следующий.

Теперь как обычно перейдем к примеру. Допустим нам нужно удалить пользователя с идентификатором $id из таблицы db_name. Для этого можно использовать следующий код.

На этом данная статья подошла к концу. Материал не сложный, но объяснять его посредством текста достаточно сложно. Все же я думаю, вы поняли всю суть вышеизложенного материала. Если у вас остались какие-то вопросы по данной статье, вы всегда можете задать их в комментариях.

На этом все. Удачи вам и успехов в изучении PHP и MySQL.

dmitriydenisov.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector