Upd! Для сервера MariaDB інструкція тут
Нехай треба зробити реплікацію бази даних repltestdb (інструкція зі створення бази даних тут). Читати далі
Upd! Для сервера MariaDB інструкція тут
Нехай треба зробити реплікацію бази даних repltestdb (інструкція зі створення бази даних тут). Читати далі
Заходимо з консолі в клієнт mysql
$ mysql -u root -p
Набираємо команди: створення бази даних, користувача і надання користувачу привілеїв:
mysql> CREATE DATABASE newdatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> CREATE USER 'theuser'@'localhost' IDENTIFIED BY 'thepassword';
mysql> GRANT ALL ON newdatabase.* TO 'theuser'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
Недавно зіткнувся з дивним глюком.
Є база MySQL, в базі таблиця, в таблиці поле типу LONGTEXT.
З даними виконуються маніпуляції за допомогою скрипта на PHP.
Поки використовував функції mysql процедурного стилю, працювало нормально. Потім перейшов на бібліотеку mysqli.
Запити виду
$mysqli->query("select `somefield` from `table` where `field`='value'");
також виконуються нормально.
Але задля убезпечення від SQL-ін’єкцій краще використовувати техніку наперед заготовлених виразів (prepared statements). Використовується ця техніка таким чином.
$sql = "select `somefield` from `table` where `field`=?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('s', 'value');
$stmt->execute();
$stmt->bind_result($somevar);
while ($stmt->fetch()) {
echo nl2br("$somevar\n");
}
Так от, поле таблиці типу LONGTEXT чомусь не передається у змінну $somevar таким скриптом.
Змінив тип поля на TEXT, тоді запрацювало гарно. Розміру тексту в 64 КБайти поки вистачає :)