Web Мастерская
Uncaught mysqli_sql_exception: Data too long for column
Получил ошибку: Uncaught mysqli_sql_exception: Data too long for column. Из текста ошибки ясно, что машина получила слишком длинные данные.
Я не стал менять тип поля, чтобы увеличить еёёмкость, я просто сделал проверку на длину строки, перед сохранением данных в Базу Данных (По аналогии: Тема: Слишком большое имя (failed to open stream: File name too long)).
Делаю так:
Готово. Ошибка исчезла.
Строка нужна для одногоразового поиска, и длиннее чем 250 символов, она ни к чему. Поэтому, в моём случае, удаление части строки допустимо. Если это не Ваш случай, рассмотрите вариант с увеличениемёмкости поля, куда сохраняется запись, либо замену типа столбца....
Я не стал менять тип поля, чтобы увеличить её
Делаю так:
$insert['search_query'] = (mb_strlen($search) > 250) ? mb_substr($search, 0, 250) : $search;Готово. Ошибка исчезла.
Строка нужна для одногоразового поиска, и длиннее чем 250 символов, она ни к чему. Поэтому, в моём случае, удаление части строки допустимо. Если это не Ваш случай, рассмотрите вариант с увеличением
- Жалоба
 
Магический метод __call(): Вызов при недоступных методов
Магический метод 
Мои два метода (
С решением этой задачи мне помог магический метод
...
__call() запускается при попытке обращения к несуществующему/недоступному методу:
	public function __call($name, $arguments)
	{
		echo 'Метод: ' . $name . ' не найден.';
	}Мои два метода (
installation и update) были похоже друг с другом, за исключением деталей, я решил их объединить, в один, при этом обращение к методам должно было остаться прежним:
$class->installation();
$class->update();С решением этой задачи мне помог магический метод
__call():
	// Установка | Обновление
	public function __call(string $name, array $arguments)
	{
		// Проверка: Если вызываемый метод не: installation, или не: update, то функция вернёт null 
		if (!in_array($name, ['installation', 'update']))
		{
			return null;
		}
		// Код функции
	} // End: Установка | ОбновлениеPHP: Цикл в две колонки | В два столбика
Работая над одним приложением, потребовалось перечислить элементы массива в две колонки (Столбика):

Для решения этой задачи, у меня было два варианта. Первый:
И CSS к шаблону:
И второй:
Я выбрал первый вариант. Он мне показался лучшем, чем второй....

Для решения этой задачи, у меня было два варианта. Первый:
		<?php foreach ($characteristics as $characteristic): ?>
		<div class="feature">
			<?php echo $this->lang()->phrase($characteristic['name']); ?>: <strong><?php echo $characteristic['info']; ?></strong>
		</div>
		<?php endforeach; ?>И CSS к шаблону:
.feature {
	display: inline-block;
	width: 48%;
}И второй:
		<?php foreach ($characteristics as $key => $characteristic): ?>
		<?php if ($key % 2): ?>
		<div style="float: right;">
		<?php else: ?>
		<div style="float: left;">
		<?php endif; ?>
			<?php echo $this->lang()->phrase($characteristic['name']); ?>: <strong><?php echo $characteristic['info']; ?></strong>
		</div>
		<?php endforeach; ?>Я выбрал первый вариант. Он мне показался лучшем, чем второй....
PHP: Дробное число без округления
В PHP есть функции: 
Бывает появляется необходимость работать с дробями, но не округляя их, а оставляя так, как есть. Нашёл такое решение:
Кстати: Блог: Call to undefined function bcdiv().
Ещё вариант:
...
round | ceil | floor, которые округляют дробные числа, в большую или меньшую сторону, в зависимости от функции и самого числа. Удобно, да не всегда...Бывает появляется необходимость работать с дробями, но не округляя их, а оставляя так, как есть. Нашёл такое решение:
$n = bcdiv('1762.789', 1, 2); // 1762.78Кстати: Блог: Call to undefined function bcdiv().
Ещё вариант:
$n = floor(12.399 * 100) / 100; // 12.39Call to undefined function bcdiv()
Для одной задачи, потребовалась функция: 
В интернете найдено решение, выполнить команду:
Следует указать свою версию PHP....
bcdiv, но, при её использовании, получил ошибку: Uncaught Error: Call to undefined function bcdiv().В интернете найдено решение, выполнить команду:
sudo apt-get install php8.3-bcmathСледует указать свою версию PHP....
