Архіви позначок: mysql

Налаштування реплікації Master-Slave для MySQL на CentOS 6.4

Поширте інформацію:

Upd! Для сервера MariaDB інструкція тут

Нехай треба зробити реплікацію бази даних repltestdb (інструкція зі створення бази даних тут). Читати далі

Створення бази даних MySQL і її користувача

Поширте інформацію:

Заходимо з консолі в клієнт 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;

PHP-глюк: mysqli_stmt::bind_result не розуміє поля типу LONGTEXT

Поширте інформацію:

Недавно зіткнувся з дивним глюком.

Є база 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 КБайти поки вистачає :)