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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.