Задать вопрос
  • Warning: preg_replace(): Unknown modifier '/' in в чем ошибка?

    DevMan
    @DevMan
    вы б хоть накидали минимальный пример для теста :(

    попробуйте https://www.php.net/manual/ru/function.preg-quote.php
    Ответ написан
    2 комментария
  • Почему не получается записать в базу данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    База данных всегда сама подробно расскажет, почему у неё не получилось выполнить запрос. Надо её только об этом попросить.

    Поэтому сначала учимся правильно соединяться.
    Весь этот детский лепет "не могу соединиться с БД" выкидываем и пишем нормальный код, который сам, без всяких проверок, сообщит нам об ошибках.
    В случае mysqli это
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect($host, $user, $pass, $db_name);
    $link->set_charset("utf8mb4");

    Здесь первая строчка отвечает как раз за информирование об ошибках

    Кроме того надо не забыть про ошибки РНР
    Во-первых, всегда в коде должно быть error_reporting(E_ALL);
    Плюс на домашнем компе ini_set('display_errors',1);, а на боевом - ini_set('display_errors',0);ini_set('log_errors',1);, и смотреть, соответственно, в логах.

    После этого переписываем запрос. Причем так, чтобы данные в БД всегда попадали отдельно от самого запроса. Это непреложное правило, которое надо соблюдать всегда.
    Для этого надо
    • Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    • Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    • Привязать переменные к запросу.
    • Выполнить подготовленный ранее запрос с помощью с помощью execute()

    В mysqli это будет так
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("sssss", $title, $discription, $date, $path);
    $stmt->execute();

    bind_param() принимает в качестве параметров все переменные, которые должны попасть в запрос, в том же самом порядке, в котором стоят плейсхолдеры в запросе. Но кроме того, сначала в этой функции должны быть указаны типы для всех переменных, в виде строки, где тип переменной обозначается одной буквой. То есть букв в этой строке должно быть ровно столько, сколько дальше будет переменных. К счастью, можно особо не париться с типами и для всех переменных указывать тип "s".

    И тогда никаких ошибок запроса уже никогда не будет. Не говоря уже о том что при любых других вариантах твой сайт поломает любой пятиклассник

    Но по-хорошему для работы с БД в РНР лучше использовать PDO, Тем более что там колупаться с bind_param не нужно, а можно сразу отправить все данные в execute

    Подключение
    $host = '127.0.0.1';
    $db   = 'test';
    $user = 'root';
    $pass = '';
    $port = "3306";
    $charset = 'utf8mb4';
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset;port=$port";
    $pdo = new \PDO($dsn, $user, $pass, $options);

    Здесь за информирование об ошибках отвечает параметр PDO::ERRMODE_EXCEPTION, а остальные просто для удобства/корректности.

    Выполнение запроса
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->execute([$title, $discription, $date, $path]);
    Ответ написан
    2 комментария
  • Выключается комп на 10-15 минут, что делать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Скорее всего, высохли/вздулись конденсаторы в блоке питания и он не вытягивает нагрузку.
    Ответ написан
    Комментировать
  • Выключается комп на 10-15 минут, что делать?

    xez
    @xez Куратор тега Компьютеры
    TL Junior Roo
    старый бп на 350в

    Это не серьезно
    Ответ написан
    Комментировать
  • Как убрать все нули из начала строки?

    0xD34F
    @0xD34F Куратор тега Регулярные выражения
    Не надо никаких регулярных выражений:

    strval(intval($str))

    Хотя, разумеется, есть такой вариант:

    preg_replace('~^0+~', '', $str)
    Ответ написан
    7 комментариев
  • Какие есть программы для "перемагничивания" жестких дисков?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Ох уже эти сказки. Ох уж эти сказочники

    Раньше чем это произойдет, у диска откажет механическая часть.

    В целом, вопрос вида "есть информация" (откуда? Научная статья, техническая статья, бабули у подъезда, лично наблюдали, как магнитный монополь сваливал гермозоны)

    должен включать в себя ссылку на источники информации. А то я тоже могу рассказать, как в Африке кур доят.
    Ответ написан
    4 комментария
  • Как конвертировать строку в число?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В PHP (как и практически во всех других языках программирования) десятичный разделитель числа - точка, а не запятая. Так что перед конвертацией нужно сделать замену.
    Ответ написан
    Комментировать
  • Ошибка не имея логического объяснения, что это?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    И где собственно ошибка? Может просто шорт теги?
    Ответ написан
    2 комментария
  • Не стартует ati radron hd 5770 на gigabyte z490 ud есть знатоки?

    @Sapskerly Автор вопроса
    Кем Маша только не работала
    Решение мне подсказал "Compolomus Дмитрий Дмитрий: у меня в биос можно выбирать генерацию pci-e но это скорее просто ограничитель"
    Итог, вроде драйвер встал, буду тестировать.
    прикладываю фото, все пункты находятся во вкладке BOOT
    6123ffd6ed9ba593708301.jpeg
    6123ffdeed55f681178969.jpeg
    Переводим Other PCI devices в режим Legasy и всё будет хорошо.

    Драйвер скачал с офф сайта amd. Через поиск на сайте ключевых слов а именно (HD 5770) нашёлся драйвер бета под вин 10. вроде работает, вроде даже карточка что-то может,
    612400f992adc915388771.jpeg
    Ответ написан
    Комментировать
  • Как перенсти активацию PhpStormс одной системы на другую?

    delphinpro
    @delphinpro Куратор тега PhpStorm
    frontend developer
    Шторм лицензируется на пользователя, а не на машину.
    Просто активируйте после установки через jetBrains аккаунт, введя свои логин и пароль.
    Ответ написан
    5 комментариев
  • Крон выдает ошибку Fatal error: require_once() при выполнении?

    DevMan
    @DevMan
    при выполнении через крон (если только это не дерганье себя же через wget/curl) рабочая директория будет отличной от корня сайта. естественно, что .. ведет не туда, куда ожидается, и файл не находится.

    решение:
    костыльное: в кроне перед вызовом скрипта сменить рабочую директорию и использовать относительные пути.
    нормальное: работать с автоматически определяемыми абсолютными путями: __DIR__, __FILE__, dirname()
    Ответ написан
    Комментировать
  • Компилирование из исходников pgadmin 4?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    На таком проекте?
    Обкатка понимания "как происходит сборка программы из исходников" обычно делается на минимальном проекте, где точно не возникнет ошибок.
    Потому что вариантов по сборке несколько (и то - основных, а на самом деле - бесконечность):
    - заранее настроенный make. Наихудший вариант, который предполагает расположение каталогов только так, как у автора. Впрочем, Makefile можно поправить - если потратить время и знать как
    - configure. Вариант получше. Скрипт проверяет систему и более-менее под нее адаптируется, потом формирует Makefile
    - autotools (autoconf, automake, libtool) - суперсет над configure, который его создает. Больше гибкости, больше проверок
    - cmake - очень часто используемая замена autotools. Еще больше проверок, еще больше гибкости
    Ответ написан
    Комментировать
  • Ошибка в Telegram PHP Bot?

    @kot999
    Backend software engineer
    в чем проблема - говорит интерпретатор. обращение к несуществующим свойствам объекта. в json эти поля не пришли.
    Ответ написан
    7 комментариев
  • Как организовать работу с картами клиентов (БД) в веб?

    deepblack
    @deepblack
    Как реализовать это в веб?
    То есть нужно сделать так, чтобы когда один менеджер открыл карту, она стала недоступна для второго.
    А когда закрыл - доступна.


    Добавить в таблицу БД дополнительные поля:
    locked BOOLEAN
    locked_user_id BIGINT
    locked_at TIMESTAMP


    Выставлять признак блокировки на время редактирования, id пользователя который заблокировал запись, и время когда это (блокировка) произошло.
    Для остальных на уровне приложения оставлять возможность работать с заблокированной записью в режиме чтения.
    Добавить в админку возможность принудительно снять блокировку, а так-же периодически (по расписанию) снимать блокировку.
    Ответ написан
    5 комментариев
  • Как удалить определенное количество ключей из массива?

    Вариант с foreach:
    $data = ['row1', 'row2', 'row3', 'row4', 'row5'];
    $countToDelete = 3;
    
    $i = 0;
    foreach ($data as $index => $value) {
    	unset($data[$index]);
    
    	if ($i >= $countToDelete - 1) {
    		break;
    	}
    	$i++;
    }
    
    var_dump($data);
    /*
    array(2) {
      [3]=>
      string(4) "row4"
      [4]=>
      string(4) "row5"
    }
    */


    Вариант с array_filter:
    $data = ['row1', 'row2', 'row3', 'row4', 'row5'];
    $countToDelete = 3;
    
    $filtered = array_filter($data, function ($value) use (&$countToDelete) {
    	return $countToDelete-- <= 0;
    });
    
    var_dump($filtered);
    /*
    array(2) {
      [3]=>
      string(4) "row4"
      [4]=>
      string(4) "row5"
    }
    */
    Ответ написан
    6 комментариев
  • Как сделать уникальную ссылку на новостной пост?

    no_one_safe
    @no_one_safe
    http://mysite/news/1/
    apache
    nginx
    Ответ написан
    Комментировать
  • Какой браузер меньше ест памяти и CPU?

    warlinx
    @warlinx
    консольный
    Ответ написан
    Комментировать
  • Динамическое создание объекта класса при использовании namespace?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    $className = '\\Calculation\\Margin\\Controllers\\'.$controllerName;
    $controllerObject = new $className;
    Ответ написан
    Комментировать