Ответы пользователя по тегу MySQL
  • Почему некорректно работает SQL запрос в PHP коде?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    цикл в цикле
    перезаписывается $i в результате чего цикл прекращается

    for ($i=0; $i < $rows; ++$i) { 
       for ($i=0; $i < $row['rating']; ++$i) {  // <--- перезаписывает изначальный $i
       for ($i=0; $i < 5 - $row['rating']; ++$i) {  // <--- перезаписывает изначальный $i


    Замените в начале $i например на $row_num
    for ($row_num=0; $row_num < $rows; ++$row_num) {
    Ответ написан
    4 комментария
  • Как получить только дату из DATETIME mysql?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    SELECT DATE(`registration_date`) FROM  `class_users`  
    WHERE DATE(`registration_date`) =  '2020-02-26' AND  `id` =  '7260'


    SELECT DATE(`registration_date`) FROM  `class_users`  
    WHERE `registration_date` LIKE '2020-02-26%' AND  `id` =  '7260'
    Ответ написан
  • Как создать временный файл для скачивания php?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Возможно проще будет генерировать файл с логом "на лету" прямо из скрипта и сразу отдавать на скачивание
    Так вы получите больше контроля в плане безопасности, так как можно проверить предварительно авторизацию и тд и не надо париться с хранением, удалением кучи файлов

    <?php
    header("Content-type: text/plain");
    header("Content-Disposition: attachment; filename=history.txt");
    
    //делаем запрос к БД на получение данных
    //выводим нужные данные через echo


    Если всё же хотите создавать файлы и писать в них данные то используйте file_put_contents() куда передаёте данные и имя файла для сохранения
    https://www.php.net/manual/ru/function.file-put-co...
    Ответ написан
    1 комментарий
  • При выполнение sql запроса выходит ошибка #1064 что не так?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    В phpmyadmin под окном запроса есть поле "Разделитель ;"
    Попробуйте там поменять ; на что-то другое, например на |
    Ответ написан
    Комментировать
  • Как получить значение столбца из записи MySQL?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    SELECT user_id FROM table WHERE star_count = '454'
    Ответ написан
    Комментировать
  • Как сделать что бы самоудаляющая ссылка жила по времени?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Так как стоит тег MySQL предполагаю что ссылки хранятся в базе?
    Значит для каждой ссылки нужно сделать колонку со временем создания ссылки и временем первого клика (захода) по ней.
    Время создания ссылки можно использовать если надо в принципе ограничить ссылку по времени, независимо от того посещали её или нет.
    Время захода по умолчанию null. При открытии ссылки смотрим это значение, при первом заходе заполняем текущую дату, при повторных кликах сравниваем дату и текущее время.
    Если прошло больше определённого времени считаем что ссылка удалена.
    Так же можно фактически удалять из базы ссылки с истёкшей датой, при этом ссылки где дата посещения null считаем не посещёнными и не удаляем. Это уже зависит от ваших требований.
    Ответ написан
    Комментировать
  • Как передать значения двумерного массива из БД MySQL в Google Maps API для обработки GeoCoder по имени адреса?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    <div id="map"></div>
    <?php
    $arr = [];
    $result = db_query("SELECT sid, name, value FROM webform WHERE name IN('form_name', 'form_city')");
    foreach ($result as $record)
    {
        $arr[$record->sid][$record->name] = $record->value;
    }
    
    $adresses = [];
    foreach($arr as $row)
    {
        $adresses[] = "{$row['form_city']}, {$row['form_name']}";
    }
    
    $js_str_address_arr = json_encode(array_values($adresses));
    ?>
        <script>
          var geocoder;
          var map;
    
    var address = <?php echo $js_str_address_arr;?>;
    
          function initMap() {
    Ответ написан
    9 комментариев
  • Почему в БД PHPMyadmin отображаются не верные символы?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Если данные побились при переносе, то смена кодировки пост-фактум может не помочь.
    1. Нужно проверить содержимое дампа. Так как может быть проблема в том как сохранены данные там.
    2. Перезалить дамп по новой

    Если у вас, предположим таблица была в latin или cp1251 в старой базе, вы сделали дамп. Он тоже в latin. Заливаете в новую базу которая настроена на utf8, то корректно дамп не зальётся никогда.

    Не хватает информации по исходным данным. Но для случая если данные были в 1251 и сейчас хотим utf8 то содержимое дампа можно переконвертить через iconv или enconv
    Ответ написан
    Комментировать
  • Как добавить свою дату в mysql?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Я так понимаю надо создать новую запись либо обновить дату если запись существует?
    INSERT INTO `oc_product` 
    SET `product_id` = '100014', date_available = '2000-01-02' 
    ON DUPLICATE KEY UPDATE
    `date_available` = '2000-01-02'
    Ответ написан
    Комментировать
  • Как преобразовать обычную строку в текст MySQL?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Вариант без placeholder'ов, если $ids массив из INT'ов то можно прогнать каждый элемент через intval() чтобы исключить любого рода инъекции и напрямую подставить в запрос

    $ids = array_map('intval', $ids);
    return $this->db->row("SELECT * FROM cources WHERE id IN (".join(',', $ids).")");
    Ответ написан
    Комментировать
  • Как скрыть просмотренные посты?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Нет никакой волшебной пули. Если есть такая задача, то только хранить списки просмотренных постов по каждому пользователю вида user_id, post_id
    И при построении ленты соотв-но исключать из выборки то что "не нужно" или через JOIN или через подзапрос вида NOT IN (...)
    В данном случае грамотные индексы и наличие достаточного кол-ва RAM на сервер должны решать большинство проблем производительности.
    Так же, возможно, сейчас разговор о преждевременной оптимизации, так как действительно ли будут сотни тысяч постов которые просмотрит один пользователь? Ведь это колоссальный объём который кто-то ещё должен запостить.
    Как вариант оптимизации, на будущее, можно историю "просмотренных постов" подчищать, удаляя там записи старее такой-то даты или чистить по кол-ву.
    То есть хранить историю просмотров "за месяц" или хранить последние 1000-10000 просмотренных постов каждым пользователем, что уже не такие большие числа.
    Ответ написан
  • Как правильно вывести данные из масиива?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    <?php
    $last_view = $model -> query("SELECT * FROM `w3m_404urls` WHERE `views` >= 3");
    while($row = $last_view->fetch_assoc())
    {
        echo "<tr>
            <td>{$row['id']}</td>
            <td>{$row['url']}</td>
            <td>{$row['date']}</td>
            <td>{$row['view']}</td>
        </tr>";
    }
    Ответ написан
    Комментировать
  • Как создать структуру таблицы?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Так же если сделать id пользователей в виде сериализованного массива с id пользвателей, то в случае возникновения состояния гонки, в сериализованном массиве окажутся некорректные данные.
    Тоже считаю, что вариант предложенный Melkij наиболее подходящий в вашем случае.
    Ответ написан
    Комментировать