Очистить данные в таблице MySQL с помощью PHP?
Как удалить все записи из одной таблицы в MySQL с помощью PHP?
Первый, как правило, лучший выбор, поскольку DELETE FROM медленнее на InnoDB.
Собственно, не ответили ли уже на ваш другой вопрос?
– это команда SQL. В PHP вы должны использовать:
mysql_query('TRUNCATE TABLE table;');
если вам не нужно сохранить текущее значение последовательности AUTO_INCREMENT, и в этом случае вы, вероятно, предпочтете
хотя если время операции имеет значение, сохраняя значение AUTO_INCREMENT, обрезая таблицу, а затем восстанавливая значение с помощью
ALTER TABLE `table` AUTO_INCREMENT = value
произойдет намного быстрее.
Пример MySQLI, где $con – это переменная подключения к базе данных и имя таблицы: mytable.
mysqli_query($con,'TRUNCATE TABLE mytable');
TRUNCATE закроет вашу таблицу и reset первичный ключ
DELETE также сделает вашу таблицу пустой, но не будет reset primary key.
мы можем использовать для truncate
мы можем использовать для удаления
мы также можем дать условия, как показано ниже
УДАЛИТЬ ИЗ tablename WHERE >
Не нужно звучать грубо, но на это можно легко ответить быстрым поиском Google. Вы должны это сделать, прежде чем спрашивать сообщество. w3schools.com – отличный сайт для изучения всего этого. Вот ссылка, которая является отличным учебником для php и mysql. http://www.w3schools.com/php/php_mysql_intro.asp
На самом деле, я считаю, что оптимизатор MySQL выполняет TRUNCATE, когда вы удаляете все строки.
Создание и удаление таблиц
CREATE TABLE name_table(
id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL ,
title VARCHAR(255) ,
message TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
age INT(11) DEFAULT 0 ,
price DOUBLE
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
PRIMARY KEY — первичный ключ, ограничение, позволяющее однозначно идентифицировать каждую запись в таблице SQL.
Первичные ключи должны содержать уникальные значения.
Первичный ключ не может иметь значения NULL.
NOT NULL — означает, что каждая строка должна содержать значение для этого столбца, нулевые значения допускаться не будут.
AUTO_INCREMENT — автоматический инкремент.
CHARACTER SET utf8 COLLATE utf8_general_ci — кодировка для конкретного поля, ставится сразу после типа.
). — здесь кодировка задана для всех полей
DEFAULT — значение по умолчанию.
ENGINE=InnoDB — тип таблицы(используемый движок) — InnoDB
Пример запроса на удаление таблицы name_table :
$sql = «DROP TABLE name_table» ;
Удалить все данные из таблицы
— данная команда очистит полностью таблицу и приведет ее к первоначальному состоянию,
когда она только создалась ( CREATE TABLE ) и в ней не было никаких записей.
— данная команда не производит сброс счётчика AUTO_INCREMENT , который используется, как известно, для автоматической генерации значения поля без необходимости его ручной установки. Чтобы этого избежать, можно использовать вместо команды выше данный вариант:
TRUNCATE TABLE name_table RESTART IDENTITY ;
— данный вариант вызова команды TRUNCATE позволит сбросить значение счётчика полей с AUTO_INCREMENT .
Поэтому значение поля первой добавленной записи после данного удаления будет 1 .
ПРИМЕРЫ создания таблиц
1 mysqli — объектно-ориентированный подход
// Создаем переменные
$servername = «localhost» ; // для локального сервера на компьютере
$username = «root» ; // имя пользователя
$password = «» ; // пароль если существует
$dbname = «newDB» ; // имя базы данных
// Устанавливаем соединение с сервером MySQL:
// создаем экземпляр класса new mysqli() и записываем, в качестве аргументов, наши переменные
$conn = new mysqli ( $servername , $username , $password , $dbname );
// Проверка соединения:
// если выполняется выражение $conn->connect_error , то останавливаем выполнение die
// и выводим «Не удалось подключиться»
// С помощью выражения $conn -> connect_error выведем информацию об ошибке .
// Иначе выведем: «Соединение успешно установлено»
if ( $conn -> connect_error ) die ( «Не удалось подключиться: » . $conn -> connect_error );
>
echo «Соединение успешно установлено» ;
// Запрос для создания таблицы users1
$sql = «CREATE TABLE users(
name VARCHAR(30) NOT NULL,
surname VARCHAR(30) NOT NULL PRIMARY KEY,
password VARCHAR(30) NOT NULL )» ;
// Проверка выполнения создания таблицы:
// Если значение $conn -> query($sql) будет — TRUE,
// тогда выведем сообщение «Таблица users создана успешно».
// В противном случае выведем сообщение «Ошибка при создании таблицы»
// и выведем информацию об ошибке: $conn->error.
if ( $conn -> query ( $sql ) === TRUE ) echo «Таблица users создана успешно
» ;
> else <
echo «Ошибка при создании таблицы: » . $conn -> error ;
>
// закрываем соединение
$conn -> close ();
?>
— После перезагрузки страницы выведет в браузере:
Таблица users создана успешно
В phpMyAdmin в базе данных newDB появилась таблица » users «
2 mysqli — процедурный подход
// Создаем переменные
$servername = «localhost» ; // для локального сервера на компьютере
$username = «root» ; // имя пользователя
$password = «» ; // пароль если существует
$dbname = «newDB» ; // имя базы данных
// Устанавливает соединение с сервером MySQL с помощью функции mysqli_connect()
$conn = mysqli_connect ( $servername , $username , $password , $dbname );
if (! $conn ) die ( «Не удалось подключиться: » . mysqli_connect_error ());
>
echo «Соединение успешно установлено» ;
// Запрос для создания таблицы:
// NOT NULL — означает, что каждая строка должна содержать значение для этого столбца,
// нулевые значения допускаться не будут.
// PRIMARY KEY — первичный ключ, ограничение, позволяющее однозначно идентифицировать
// каждую запись в таблице SQL.
$sql = «CREATE TABLE users2(
name VARCHAR(30) NOT NULL,
surname VARCHAR(30) NOT NULL PRIMARY KEY, password VARCHAR(30) NOT NULL )» ;
// Проверка выполнения создания таблицы:
// Если запрос к базе данных — выполнен,
// тогда выведем сообщение «Таблица users2 создана успешно».
// В противном случае выведем сообщение «Ошибка при создании таблицы»
// и выведем информацию об ошибке mysqli_error($conn) ;
if ( mysqli_query ( $conn , $sql )) echo «Таблица users2 создана успешно
» ;
> else <
echo «Ошибка при создании таблицы: » . mysqli_error ( $conn ); >
// закрываем соединение
mysqli_close ( $conn );
?>
— После перезагрузки страницы выведет в браузере:
Таблица users2 создана успешно
В phpMyAdmin в базе данных newDB появилась таблица » users2 «
// Создаем переменные
$servername = «localhost» ; // для локального сервера на компьютере
$username = «root» ; // имя пользователя
$password = «» ; // пароль если существует
$dbname = «newDB» ; // имя базы данных
// Подключение к серверу MySQL
// Обработка ошибок подключения: используем блок try-catch :
try // Подключение к серверу MySQL
$conn = new PDO ( «mysql:host= $servername ; dbname= $dbname » , $username , $password );
echo «Соединение успешно установлено
» ;
// Устанавливаем режим ошибки PDO в исключение
$conn -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
> catch ( PDOException $e ) <
echo «Ошибка при создании таблицы:
» . $e -> getMessage ();
>
// Созданние таблицы
try // Созданние SQL-запроса
$sql = «CREATE TABLE users3(
name VARCHAR(30) NOT NULL,
surname VARCHAR(30) NOT NULL PRIMARY KEY,
password VARCHAR(30) NOT NULL )» ;
// Устанавливаем режим ошибки PDO в исключение
$conn -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
$conn -> exec ( $sql );
echo «Таблица users3 создана успешно
» ;
> catch ( PDOException $e ) <
echo «Ошибка при создании таблицы:
» . $sql . $e -> getMessage ();
>
// Закрыть подключение
$conn = null ;
?>
— После перезагрузки страницы выведет в браузере:
Таблица users3 создана успешно
В phpMyAdmin в базе данных newDB появилась таблица » users3 «
Empty a MySQL table with PHP (and PDO).
This is a tutorial on how to completely empty a MySQL table using PHP. In certain cases, you may want to delete everything in the table and start afresh.
In this tutorial, I will be using PHP’s PDO object to interface with my MySQL database:
prepare($sql); //Execute the statement. $statement->execute();
A step-by-step guide of the code snippet above:
- I connected to MySQL using the PDO object. I also selected a database called “test”.
- I created the SQL statement that I want to run. In this case, I am using the TRUNCATE TABLE statement to empty a table called “videos”.
- I prepared the SQL statement.
- Finally, I executed the statement, thereby emptying the table in question.
Note that there are a few differences between using the TRUNCATE statement and simply deleting all rows with the DELETE statement:
- The TRUNCATE TABLE statement is faster.
- To empty a MySQL table using this method, your MySQL user account will need to have the DROP privilege.
- The TRUNCATE TABLE statement can NOT be rolled back.
- If you truncate a MySQL table, the AUTO_INCREMENT key will be reset. i.e. The next autoindex for your PRIMARY KEY will be set back to 1. This is not the case with DELETE.
- Behind the scenes, this statement is dropping / deleting the table itself before recreating it.
- This statement will not return any meaningful data. i.e. It won’t return the number of rows that have been deleted. It’ll simply tell you that 0 rows have been affected.
Hopefully, this article helped!