Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу MySQL
  • Как сравнить текущую дату в sql запросе?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    t.close_date >= curdate()
    Ответ написан
    Комментировать
  • Почему не сохраняет username в базу данных mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В принципе подход правильный, но код взят из какого-то идиотского источника.
    Это же надо расписать три строчки на два экрана!

    В целом, читаем здесь В чем ошибка моего кода и здесь Почему не получается записать в базу данных?

    Причем пример кода взять из второго ответа, и писать код для работы с БД нормально, без всего этого маразма "иф стмт мюскюли препаре, иф стмт сюскюли екзекюте, самсинг вент вронг!"
    Ответ написан
    Комментировать
  • Как поправить mysql запрос?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Пишу сайты для Людей. Не быстро. Дорого. Качественно.

    "КАЧЕСТВЕННО", Карл!
    Этот человек пишет сайты качественно.
    Вот это вот называется у нас "качественно". Добро пожаловать в новую вайти реальность.

    Ну и не быстро. Пока на тостер напишешь чтобы тебе готовый код написали, пока его напишут, пока его скопируешь, пока запустишь, пока ошибку увидишь, пока на тостер обратно с ошибкой придешь - конечно медленно получается.

    И еще и имеет наглость брать за это деньги.
    Неплохой бизнес, с одних лохов взять денег за работу, а потом к другим с протянутой рукой: "поможите люди добрые, мы сами не местные, у меня не так много опыта... Напишите мне код забесплатно"
    Ответ написан
  • Как можно увеличить скорость записи в бд mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Мария Турова, а зачем ты это всё писал?
    Ответ написан
    Комментировать
  • Как переписать подключение к базе данных, по принципам ООП?

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

    ООП - это не картина, которую купил и на стенку повесил, для красоты.
    Это инструмент для решения какой-либо задачи.
    Если задачи нет, то и ООП применять не следует.

    в данном случае перед ООП надо выучить куда более базовые вещи.
    Например научиться применять готовые классы, такие как mysqli
    узнать почему за использование @ программистам в аду льют кипяток на самые нежные части тела
    выучить что exit('Ошибка подключения'); - это говнокод
    ну и открыть для себя разделение логики работы с данными и логики отображения. То есть сначала получить все данные, а потом только выводить.

    Эту страницу можно переписать в соответствии с принципами аккуратного кода

    Сначала сделать файл config.php.
    Этот файл можно будет исключить из системы контроля версий и таким образом иметь на каждом сервере свой

    <?php
    return [
        'db' => [
            'host' => '127.0.0.1',
            'port' => 3306,
            'db'   => 'pizza',
            'user' => 'root',
            'pass' => '',
            'charset' => 'utf8mb4',
        ]
    ];

    потом сделать файл mysqli.php
    Этот файл можно будет включать во все скрипты, которым нужно соединение с БД
    <?php
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $db = new mysqli(
        $config['db']['host'], 
        $config['db']['user'], 
        $config['db']['pass'], 
        $config['db']['db'], 
        $config['db']['port']
    );
    $db->set_charset($config['db']['charset']);
    $db->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);


    Потом сделать страницу pizza.tpl.php в которую поместить весь HTML
    .
                <select id="single" class="form-control" name = '1234' >
                    <option value="" disabled selected style='display:none;'>выберите тип</option>
                    <?php foreach($types as $object): ?>
                        <option value ="<?=$object['id']?>"><?=$object['name']?></option>
                     <?php endforeach ?>
                </select>


    И потом сделать страницу pizza.php на которой собрать это всё вместе
    <?php
    $config = require 'config.php';
    require 'mysqli.php';
    
    $sql="SELECT * FROM pizza";
    $types=$db->query($sql)->fetch_all(MYSQLI_ASSOC);
    
    include 'pizza.tpl.php';


    После этого можно будет потихоньку приглядываться к ООП.
    Например сделать класс pizzaModel
    Но делать его будет иметь смысл только тогда, когда мы будем знать, какие еще действия с пиццей будет производить этот код
    Ответ написан
    5 комментариев
  • Не отправляются данные веденные из input в бд (Mysql, PHP)?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    И не будет никакой ошибки, потому что код взят из какого-то древнего руководства, написанного обезьяной.
    Меня вот поражает, ну ОТКУДА вы вы выкапываете это дерьмо мамонта? На каком ютуб канале, какой гамадрил вот это вот всё вещает?

    - print "Ошибка!: " . $e->getMessage() писал дебил, потому что специально выводить ошибки не нужно - РНР и так выведет ошибку, если его об этом попросить.
    - try {} catch (PDOException $e) { писал дважды дебил, потому что ПДО будет кидать исключения только если ему об этом сказать при соединении. А дебил об этом не сказал
    - try {} catch (PDOException $e) { писал трижды дебил, потому что см. выше. Не нужно ловить ошибку, чтобы её вывести.
    - VALUES ('{$name}', '{$surname}', '{$age}', '{$email}', '{$phone}', '{$index}'"); - а вот это уже, я думаю, не руководство, а самодеятельность автора кода. Даже в дебильном руководстве такое вряд ли можно увидеть.
    - enter' => $submit - это уже тоже автор кода, от излишнего усердия и ПОЛНОГО не понимания своих действий
    - ну и да, почему-то в списке полей id_user есть, а в VALUES внезапно нету. "Где логика, где разум?" (с)

    В общем учимся работать с БД в РНР заново
    .
    // Параметры для подключения
    $db_host = "localhost";
    $db_user = "root"; // Логин БД
    $db_password = "root"; // Пароль БД
    $db_base = 'test'; // Имя БД
    $db_encoding = "utf8mb4" // кодировка 
    
    // Подключение к базе данных
    $db = new PDO("mysql:host=$db_host;dbname=$db_base;charset=$db_encoding", $db_user, $db_password);
    // Просим ПДО сообщать об ошибках
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    // Собираем данные для запроса
    $data = array( 'name' => $name, 'surname' => $surname, 'age' => $age, 'email' => $email, 'phone' => $phone, 'index' => $index);
    // Подготавливаем SQL-запрос
    $query = $db->prepare("INSERT INTO `users`(`user_name`, `user_surname`, `user_age`, `user_email`, `user_phone`, `user_index`) 
                         VALUES (:name, :surname, :age, :email, :phone, :index)");
    // Выполняем запрос с данными
    $query->execute($data);


    Хотя бы так
    Ответ написан
    6 комментариев
  • Как сделать IN если возможные значения записаны строкой?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В ужасе выкинуть таблицу, в которой поле может иметь вид 1,2,3,5,15 и потом еще полчаса тошнить в унитаз от омерзения.
    Купить букварь по базам данных
    Прочитать в нем такое слово как "реляционная база данных"
    Сделать нормальную таблицу, в которой 1,2,3,5,15 будет не в одной строке, а в ПЯТИ
    Дальше всё как и было
    Ответ написан
    6 комментариев
  • Почему mysqli_insert_id выполняется медленно?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    скорее всего это не mysqli_insert_id() а что-то другое
    Я 20 лет занимаюсь программированием, из них 15 сижу в таких гадюшниках как этот или стаковерфлоу, но никогда не видел подобной проблемы
    и это очевидно, поскольку эта фунция вообще ничего не делает, а только получает от БД УЖЕ сгенерированный идентификатор

    Скорее всего сейчас выяснится, как в песенке "Все хорошо, прекрасная маркиза": дело не в mysqli_insert_id(), а во вставке, и не просто во вставке а в том что вставляется 100500 строк, и не просто, а половина из них с ошибками, и так далее
    Ответ написан
    Комментировать
  • Как подключиться к phpmyadmin, если по ip не пускает?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    надо взять голову и подумать.
    если любой хрен с горы может запросто, попивая чаёк сидя в кресле на даче, подставить любой ip, то в чем тогда вообще смысл ограничивать доступ по ip?
    Ответ написан
    Комментировать
  • Как заменить строку на цифры у оператора IN?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Цифры тут как раз совершенно не обязательны, а вот знаков вопроса должно быть больше. На каждый айди.
    ПХП не джинн из бутылки, чтобы отгадывать, что тут имелось в виду - целиком строка или отдельные значения.
    Если нужны отдельные значения, то и передавать их надо по отдельности, n'est pas?

    Это конечно не так красиво выглядит, но других вариантов все равно нет

    $array = [8,10,11]; 
    $in  = str_repeat('?,', count($array) - 1) . '?';
    $sql = "SELECT * FROM users WHERE id NOT IN ($in)";
    $stmt  = $db->prepare($sql);
    $stmt->execute($array);
    Ответ написан
    5 комментариев
  • Как переносятся базы данных Postgresql и Mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    дамп
    Ответ написан
    Комментировать
  • Не отправляется MYSQL ЗАПРОС?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    https://qna.habr.com/q/918033#answer_1847841
    И в целом рекомендую прочитать ответы на этой странице, поскольку со всеми проблемами придется столнуться
    Ответ написан
    Комментировать
  • Как защититься от таких инъекций или как они называются?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Тег <script> не имеет ни малейшего отношения к mysql.
    Наличие этого тега в базе данных никакой инъекцией не является.

    "Инъекция" будет только если этот тег будет выведен внутри HTML кода как есть. Называется XSS
    "Инъекция" которая относится к mysql называется SQL инъекция, и чаще всего позволяет прочитать из БД любые данные. Скорее всего является неактуальной для данного сайта, поскольку там просто нечего читать.

    Чтобы защититься от XSS, надо использовать htmlspecialchars() при выводе данных в HTML
    Чтобы защититься от SQL инъекций, надо использовать для работы с БД подготовленные выражения
    Чтобы не "совали" всякий мусор, надо использовать защиту от спама, например капчу.
    Ответ написан
    Комментировать
  • Не отправляются данные из формы в базу данных, что не так?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    ошибок и не будет
    потому что ПДО не настроен показывать ошибки
    чтобы настроить, вместо того говнокода который сейчас, должно быть примерно так (не забыть подставить свои значения)
    $host = '127.0.0.1';
    $db   = 'weekly_journal';
    $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);

    после этого если не получится записать, то БД сама скажет - почему.
    Ответ написан
    Комментировать
  • Почему долгая выборка в Mysql, если в базе больше 2 000 000 записей?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Скорее всего не хватает памяти на сервере или она не используется
    Проверить innodb_buffer_pool_size
    Ответ написан
    Комментировать
  • Достаточна ли защита сайта php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Что такое "файл с защитой от sql-инъекций"? Это звучит как "я никогда не заражусь спидом, потому что когда я занимаюсь сексом, то в соседней комнате у меня специальная тумбочка с кучей презервативов". Презерватив надо использовать в процессе, а не держать в отдельной тумбочке. Только тогда он поможет.

    "хотя это можно прописать и в .htaccess" - это совсем какой-то идиотизм, причем заведомо вредный

    "Всё, начиная с php авторизации, защищено от прямого доступа" - это тоже, хотя просто бесполезный

    ".htaccess. На самом деле это очень полезный файл" - полезность файла .htaccess сильно преувеличена. Это скорее костыль для калек, которые не умеют настраивать систему правильно. Не говоря уже о том, что в современных веб-серверах такого файла вообще нет.

    В целом, из того что описано, помимо нескольких бессмысленных телодвижений, проблемы я здесь вижу по трем пунктам
    1. Какая-то странная "защита от инъекций", которая скорее всего ни от чего не защищает, а только портит данные
    2. Большой вопрос, как именно "генерируется" код доступа.
    3. Вообще не упомянута защита от XSS. Ну и CSRF если уж на то пошло

    Плюс вероятные дыры в конкретной реализации, когда на словах вроде правильно, но в коде реализовано криво. Типа location в качестве защиты страниц от доступа. Ну и в целом надо код видеть. Может быть там какое-нибудь гениальное incude $_GET['page'];
    Ответ написан
    3 комментария
  • Валидация на существования юзера?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Писали уже 100500 раз, запросы должны быть подготовленные.
    Тогда и не будет возникать идиотских вопросов.
    Ответ написан