Задать вопрос
Ответы пользователя по тегу MySQL
  • Как вывести число записей добавленных в БД через PHP?

    qant
    @qant
    programer
    $total_inserted = 0;
    
    foreach ($comArr as $key => $value) {
        $postId = $value['postId'];
        $id = $value['id'];
        $name = $value['name'];
        $email = $value['email'];
        $body = $value['body'];
        // заносим в БД
        $comSql = "INSERT INTO `comments` (`postId`, `id`, `name`, `email`, `body`)
                        VALUES ('$postId', '$id ', '$name','$email','$body')";
        if (mysqli_query($conn, $comSql)) {
            $total_inserted++;
        }
    }
    
    echo 'Всего добавлено:' . $total_inserted;
    Ответ написан
  • Почему результаты max() не верные (mysql)?

    qant
    @qant Автор вопроса
    programer
    В итоге что бы отсортировать подобную таблицу нагуглил и применил такой хак

    (meta_value * 1) <-- это преобразует строку 12345 в число, и сортировка работает правильно.

    SELECT distinct
        meta_value
    FROM
        postmeta
    WHERE
        meta_key = 'property_id'
            AND meta_value BETWEEN 1000 AND 30000
            ORDER BY (meta_value * 1) DESC;
    Ответ написан
    Комментировать
  • Почему не отправляется запрос на базу данных mysql?

    qant
    @qant
    programer
    вместо INSERT INTO reg VALUES(NULL,$name,$number,$login,$password);
    попробуй это:
    INSERT INTO reg (id, name, phone, login, password) VALUES (NULL,$name,$number,$login,$password);

    так же сделай var_dump($query); после этой $query = ..., что бы увидеть какой получился запрос и попробуй выполнить его в ручную черещ phpmyadmin, увидишь скорее всего ошибку и сможешь понять что да как.

    Еще подсказка, что бы посмотреть как должен выглядеть правильный запрос, добавь его руками через phpmyadmin там у тебя появиться пример sql запроса.
    Ответ написан
    Комментировать
  • Почему while ($row = $db_data->fetch_assoc()) сжирает память с большими таблицами?

    qant
    @qant
    programer
    Предполагаю что в эту таблицу свалено вообще ВСЕ...

    Как вариант: разделить запрос на несколько простых

    Основную выборку сделайте указав обязательные поля например только id и type что бы выбрать нужные вам значения:

    select id,type from table where type='active', я думаю результату оч сложно будет скушать много памяти.

    Далее в цикле где уже будете выводить данные, добираете остальные нужные данные

    select title, content from table where id=1;

    Надеюсь идея понятна.
    Ответ написан
    Комментировать
  • Как оптимизировать update для таблицы с nested sets?

    qant
    @qant
    programer
    Попробуйте спросить в телеграм канале https://t.me/ru_mysql
    Где то слышал, что скорость update могут влиять индексы, ты если в базе много записей то перестройка индексов это очень дорогая операция.

    Как решать не подскажу, но очевидно, что вам нужно просто понять по какой причине происходит замедление и как этого можно избежать, для этого нужно провести профилирование запросов чтобы видеть цифры и сделать соответствующие выводы, как по мне вопрос совсем непростой... Без профилирования и цифр тут нет смысла рассуждать.

    Нет универсального решения тк каждая база уникальна по своему.

    Напишите сюда решение для истории для потомков.
    Ответ написан
  • Возможно реализовать запрос на запись в несколько табл?

    qant
    @qant
    programer
    Нет, вы не можете вставить в несколько таблиц в одной команде MySQL. Однако вы можете использовать транзакции.

    BEGIN;
    INSERT INTO users (username, password)
      VALUES('test', 'test');
    INSERT INTO profiles (userid, bio, homepage) 
      VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com');
    COMMIT;


    Посмотрите на LAST_INSERT_ID () (dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html) для повторного использования значений автоинкремента.

    Есть 3 возможных способа: в коде, который вы видите выше. Это делает все это в MySQL, и LAST_INSERT_ID () во втором операторе автоматически будет значением столбца автоинкремента, который был вставлен в первый оператор. К сожалению, когда второй оператор сам вставит строки в таблицу со столбцом автоинкремента, LAST_INSERT_ID () будет обновлен до таблицы 2, а не таблицы 1.

    Если вам все еще понадобится таблица 1, мы получим хранить его в переменной. Это приводит нас к способам 2 и 3: запаковать LAST_INSERT_ID () в переменную MySQL:
    INSERT ...
    SELECT LAST_INSERT_ID() INTO @mysql_variable_here;
    INSERT INTO table2 (@mysql_variable_here, ...);
    INSERT INTO table3 (@mysql_variable_here, ...);


    Запишет LAST_INSERT_ID () в переменную php (или на любой язык, который может подключаться к базе данных по вашему выбору): INSERT ... Используйте ваш язык для получения LAST_INSERT_ID (), либо выполнив этот литерал в MySQL, либо используя, например, mysql_insert_id () php, который делает это для вас, INSERT [используйте вашу переменную php здесь].
    Ответ написан
  • Ошибка - Версия клиентской библиотеки MySQL отличается от MySQL-сервера как обновить на Centos 6?

    qant
    @qant
    programer
    stackoverflow.com/questions/9361720/update-mysql-v...

    Когдаш народ гугл то освоит...

    Давно пора понять что почти ВСЕ уже задано и отвечено...
    Ответ написан
    Комментировать