Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу MySQL
  • Как записать id пользователя из $_SESSION в таблицу БД?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Так же, как и любую другую переменную
    Ответ написан
  • Дублируется строка в Mysql запросе PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Тебе ответили уже, 5 часов назад
    Хотите получить все фото и видео на стене - делайте три запроса: к wall, wall_photos и wall_audios отдельно

    Что здесь непонятно?
    Ответ написан
    Комментировать
  • Как можно доставать данные из текстового файла и записывать в БД?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Но в целом, конечно, если делать по уму, то новичку не справиться.
    Да и не всякий середнячок осилит, чего уж там.
    $file = file($_FILES['name']['tmp_file'], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    
    $query = "INSERT INTO `table` (`name`, `home`) VALUES (?, ?)";
    $stmt = $connection->prepare($query);
    $stmt->bind_param("ss", $name, $home);
    
    $connection->begin_transaction();
    foreach($file as $home) {
        $stmt->execute();
    }
    $connection->commit();


    Файл надо читать, удаляя переводы строк (и заодно пустые строки).
    Для запросов в которых используются переменные, надо всегда использовать prepare.
    Вставки, которые выполняются в цикле надо заключить в транакцию. Для скорости и вообще.
    Ответ написан
  • Вопросы вместо кириллицы при выводе информации из MySQL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Если знаки вопроса простым текстом, то кодировку надо задавать в DSN, как показано здесь

    Если знаки вопроса в ромбиках, то это кодировка страницы в браузере, а не БД.
    Задаётся либо через default_charset в php.ini либо тупо
    header('Content-Type: text/html; charset=utf-8');
    Ответ написан
  • Как выполнить одновременно две команды SQL через PDO?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    можно
    $pdo->query("CALL `GET_AVG_SALARY`(@p0)");
    $pdo->query("SELECT @p0 AS `result`");


    И для mysqli этот код тоже подойдёт.
    Ответ написан
    Комментировать
  • Как удалить экранирование при экспорте из mysql в csv?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не экранировать символы в mysql.
    Ответ написан
  • Удаление и редактирование записей в бд?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну хотя бы так.
    class base{
        public $conn;
        public function __construct(){
            mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
            $this->conn = mysqli_connect('localhost', 'drops', '', 'teach');
            mysqli_set_charset($mysqli, $charset);
        }
        public function query($query, $params = []) {
            if (!$params) {
                return $this->conn->query($query);
            } 
            $types = $types ?: str_repeat("s", count($params));
            $stmt = $this->conn->prepare($sql);
            $stmt->bind_param($types, ...$params);
            $stmt->execute();
            return $stmt;
        }
        public function get_row($query, $params = []) {
            $stmt = $this->query($query, $params);
            return $stmt->get_result()->fetch_assoc(MYSQLI_ASSOC);
        }
        public function get_all($query, $params = []) {
            $stmt = $this->query($query, $params);
            return $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
        }
    }


    А как в хтмл пишутся ссылки, тебе подскажут
    Ответ написан
    3 комментария
  • В с чем связана ошибка при добавении данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Проблема в прокладке между стулом и монитором. Шутка.

    Как новичку тебе простительно, но на будущее делаешь так.
    Копируешь сообщение об ошибке (авделяешь мышкой, нажимаешь правую кнопку, и выбираешь "Копировать").
    Потом нажимаешь мышкой в адресной строке своего браузера, стираешь всё что там есть, снова правяк кнопка - "вставить и перейти".
    На открывшейся странице переходишь по первым нескольким ссылкам и читаешь, как объясняется твоя проблема.
    Вот смотри - я сделал это для тебя: Field 'category' doesn't have a default value
    Ответ написан
    Комментировать
  • Атака на базу данных с использованием куки?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Стереть скрипт браузерной игры и больше не делать таких глупостей
    Ответ написан
    4 комментария
  • Как подключить два php файла к одной бд?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Надо к файлу подключать не БД, а HTML.

    У тебя у самого судороги не начинаются, когда ты смотришь вот на это
    <div class=\"col-md-4 col-sm-6 my-3 my-md-0\">
      <form action=\"index.php\" method=\"post\">
        <div class=\"card shadow\">
          <a href='./index.php?product=$productid'>

    ?
    А писать все эти палочки и кавычечки не задолбался?

    А теперь подмай, зачем тебе база данных в HTML?

    Не проще выполнить свой запрос в основном файле, там же, где делаются остальные запросы, а в этом, во-первых, писать HTML как есть,

    <div class="col-md-4 col-sm-6 my-3 my-md-0">
      <form action="index.php" method="post">
        <div class="card shadow">
          <a href="./index.php?product=<?=$productid?>">
          <div id="card-top">


    а во-вторых, и функция никакая не будет нужна, и вместо вызова функции надо будет сделать просто include этого файла.
    Ответ написан
  • Как получить последние 10 записей из MYSQL в обратном порядке?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    А что - три отдельных поля в таблице base_post нельзя было сделать? Обязательно было в одно пихать?
    Ответ написан
  • Как подключиться к MySQL через Powershell 2.0?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    mysql -h database_hostname -u user_name -puser_password database_name
    Ответ написан
    Комментировать
  • Как настроить autoincrement PhpMyAdmin в Open Server?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не в Open Server а в своем коде
    1. Вместо '' надо писать null
    2. Переменные никогда не пихать прямо в запрос, а передавать отдельно.
    3. Чтобы не тыкать пальцем в небо в оисках ошибки, надо настроить сообщения об ошибках в mysqli

    $stmt = $db->prepare("INSERT INTO `users` VALUES(null, ?,?)");
    $stmt->bid_param("ss", $login, $pass);
    $stmt->execute();


    Как настроить вывод ошибок и вообще правильно соединяться, см здесь
    Ответ написан
  • Почему не выполняется запрос mysqli_query?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Потому что надо писать не абстрактные рассуждения, "У тебя ашыпка!" и потом гадать пальцем в небо, а спрашивать у базы данных, что ей конкретно не нравится. И она сама всё напишет.
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect("localhost", "*******", "*******");
    $mysqli->set_charset("utf8mb4");
    
    $sql = 'INSERT INTO players SET age = 11';
    $result = mysqli_query($link, $sql);
    echo "Данные успешно добавлены";


    И после получения сообщения об ошибке ее моожно будет самостоятельно прочесть и исправить.
    Ответ написан
    Комментировать
  • Как правильно вывести данные, минимизируя количество запросов?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну вот опять вопрос высосанный из пальца.
    Минимизация количества запросов не долна быть самоцелью.
    У тебя играет твой аккордеон? Быстро? Если да - то оставь вего в покое, и ничего не трогай.
    Если медленно - то надо ускроить. Но не изменением количества запросов, а ускоренмем того участка, который тупит. Это блин простая истина, но она почему-то недоступна пониманию 95% похапешников. Которые для ускорения работы с сетевыми протоколами кидаются заменять двойные "ковычки" на одинарные.

    Менять запросы надо не потому что их много, а потому что они бессмысленные.
    Вот у тебя запрос с группировкой, который выводит те же самые данные, что и запрос ниже в цикле.
    Вопрос - ЗАЧЕМ тебе этот запрос вообще?
    Ну то есть ответ понятен - чтобы можно было кушать любимое спагетти, устравивая кашу из HTML, SQL, CSS, РНР, mysqli, картинок и вообще всего и побольше, главное чтобы всё в куче было.
    И как тут в начале страницы узнать, что будет двумя строчками ниже? Загадка века.

    А если хотя бы раз в жизни попробовать написать осмысленный код, который сначала получает данные, обрабатывает их, а только потом начинает вывод, то получится, что нужен-то один запрос всего.
    Поскольку запросить всех дилеров одним запросом, сгруппировать в массивы по региону и городу, а потом тупо вывести, показывая количество элементов в массиве с помощью банальной функции count(), прекрасно можно и в похапе.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    По сслыке есть все ответы.

    Если использовать позиционные "псевдопеременные", то просто смержить два массива - один для in, второй для not in.
    Если использовать именованные "псевдопеременные", то сначала приготовить два массива, с разными именами переменных, а потом просто их смержит.
    Ответ написан
    Комментировать
  • Вывод данных из mysql php в json?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    $user = 'andrey';
    $stmt = $conn->prepare("SELECT * FROM table WHERE user=?");
    $stmt->bind_param("s", $user);
    $stmt->execute();
    $result = $stmt->get_result();
    $data = $result->fetch_all(MYSQLI_ASSOC);
    echo json_encode($data);
    Ответ написан
    Комментировать
  • Как проверить поле на пустоту?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Учитывая твоя предыдущий вопрос, ты вряд ли осилишь, но вообще поиск по необязательным условиям делается так:
    $conditions = [];
    $parameters = [];
    
    // conditional statements
    if (!empty($_GET['name']))
    {
        // here we are using LIKE with wildcard search
        // use it ONLY if really need it
        $conditions[] = 'name LIKE ?';
        $parameters[] = '%'.$_GET['name']."%";
    }
    
    if (!empty($_GET['age']))
    {
        // here we are using equality
        $conditions[] = 'age = ?';
        $parameters[] = $_GET['age'];
    }
    
    $sql = "SELECT * FROM users";
    
    // a smart code to add all conditions, if any
    if ($conditions)
    {
        $sql .= " WHERE ".implode(" AND ", $conditions);
    }
    
    // the usual prepare/bind/execute/fetch routine
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param(str_repeat("s", count($parameters)), ...$parameters);
    $stmt->execute();
    $b = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
    if($b) {
        print_r($b);
    } else {
      echo "0 results";
    }
    Ответ написан
    5 комментариев
  • Как вывести данные из mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ошибка Couldn't fetch mysqli означает что ты где-то уже закрыл соединение с БД зачем-то

    Ну и чтобы ответить на вопрос из заголовка и переписать весь этот пещерный ужас на нормальный РНР

    $b = $conn->query("SELECT * FROM users WHERE name = 'alex'")->fetch_all(MYSQLI_ASSOC);
    if($b) {
        print_r($b);
    } else {
      echo "0 results";
    }
    Ответ написан
    Комментировать