Задать вопрос
  • Как получить данные одного поля с двух таблиц mysql?

    Compolomus
    @Compolomus
    Комполом-быдлокодер
    проблема в том, что в результате ид из обоих таблиц, потому получается конфликт
    ну и так же оно при таком запросе могут быть непонятки, лучше использовать join
    SELECT 
      `messages`.`id` AS `messages_id`, `money_box`.`id`  AS `money_box_id`
    FROM `messages` JOIN `money_box`

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

    Adamos
    @Adamos
    "Дедик" - это dedicated server, полностью ваш железный сервер в чьем-то датацентре.
    Да, на нем можно без всяких раздумий запустить винду и елозить мышкой. Но он стоит, как крыло от самолета, и вас вообще не должен интересовать.
    Для пет-сервера, которому не нужно ни выдерживать наплыв пользователей, ни крутить тяжелые задачи - самый дешевый VPS за 55 руб./мес., скорее всего, будет более чем достаточен.
    НО! Никаких мышек по рабочему столу. Линукс, командная строка, вся свобода администрирования...
    Ответ написан
    2 комментария
  • Правда ли что логический порядок выполнения запроса может не совпадать с планировщиком?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Порядок выполнения запроса может не совпадать с его текстом.

    А вот с планом он совпадает на 100% - ну просто потому что выполняется именно по этому плану.
    Ответ написан
    Комментировать
  • Как изменить типа данных столбца базы данных в Laravel?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Дефолт стоит для строкового поля?
    Измените его тоже

    $table->integer('year')->nullable()->default(null)->change();


    Ну и, возможно, придется руками пройтись по таблице и убрать из этого поля значения "Не указано", так как оно не может быть преобразовано в целочисленный тип.

    Можно запросом, прямо в миграции

    Film::whereYear('Не указано')->update(['year' => null])
    Ответ написан
    Комментировать
  • Почему у стрелочной функции из объекта контекст виндоу?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    На learn.javascript, например, неплохо написали:
    Стрелка => ничего не привязывает. У функции просто нет this.
    При получении значения this – оно, как обычная переменная, берётся из внешнего лексического окружения.


    В вашем примере с литералом объекта можно добавить для понимания:
    const obj = {
      w() {
        console.log('w', this);
      },
      x: function () {
        console.log('x', this);
      },
      y: this,
      z: () => {
        console.log('z', this);
      },
    };
    
    obj.w(); // obj
    obj.x(); // obj
    console.log('y', obj.y); // Window
    obj.z(); // Window


    Запись литерала объекта не создаёт свой контекст: на момент записи this тот же, что и снаружи:
    const a = this; // Window
    const obj = {
      b: this, // тоже Window 
    }
    
    a === obj.b // true
    Ответ написан
    1 комментарий
  • Как выполнить такой тип запроса в MySQL?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    JOIN, GROUP BY, COUNT()
    Ответ написан
    4 комментария
  • Что поменять в конфиге MySQL?

    @Akela_wolf
    Extreme Programmer
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;
    
    IF NOT EXISTS ;
    
    CREATE TABLE IF NOT EXISTS `axle_trees` (


    Вот этот вот IF NOT EXISTS находящийся между запросами - он точно импортируется без всяких проблем?

    Что-то мне кажется что нет и не в настройках MySQL дело вовсе.
    Ответ написан
    Комментировать
  • Что можно посоветовать вечному джуниор разработчику?

    opium
    @opium
    Просто люблю качественно работать
    Так вы уже мидл просто напишите об в резюме
    Ответ написан
    Комментировать
  • Как подгружать изображения по клику?

    Liatano
    @Liatano
    Воспользоваться JS и применить AJAX. Для этого на сервер должен быть файл, который по запросу с id картинки будет возвращать ссылку на картинку. По клику на кнопку js инициирует запрос на сервер, получает ответ, вставляет изображение на сайт.
    Ответ написан
    3 комментария
  • Какое Api для Pet проекта с авторизацией можно использовать?

    LittleBob
    @LittleBob
    Я думаю, вам идеально подойдёт Firebase. Удобный и достаточно простой инструмент, а позволяет многое (Авторизация, база данных и ещё куча всего). Для индивидуального проекта бесплатного плана хватит за глаза
    Ответ написан
    Комментировать
  • Как уменьшить количество таблиц-справочников с тремя-четырьмя строками?

    @rPman
    тут несколько подходов, я трогал каждый из них и все они имеют право на существования
    1. оставь как есть, я рекомендую, пусть будет 100500 таблиц справочников (если проблем с именами нет ну и отлично), fk-индексы все это свяжут а инструменты анализа базы данных помогут с этим работать (автоматические query builder с мышевозекательным интерфейсом) и база будет сама следить за тем что идентификаторы справочников не противоречивы
    недостатков я не могу придумать, кроме может быть сильно разросшейся структуры, когда то давно я слышал что некоторые базы данных при увеличении количества таблиц начинают хуже работать но как я понимаю это если их будет десятки тысяч а не десятки и сотни.. может быть резервное копирование такой базы или ее репликация будет проходить чуть медленнее или еще хуже, организационно репликация может быть настроена на не рассылку ddl модификаций, в этом случае создание нового справочника будет задавать работу еще и админам, что нежелательно.

    2. противоположный, использование одной таблицы key-value для нескольких разнородных справочников (id, value, table_name), в 99% случаев можно использовать один сиквенс (одну последовательность идентификаторов), вам же не обязательно чтобы разные справочники начинали счет своих строк с одного и того же числа 1.
    Недостаток - база данных теперь не сможет контролировать что вы используете непротиворечивый идентификатор (можно в запись одного справочника указать номер из другого), хотя несуществующий так же нельзя будет указать (и будут работать delete cascade), так же удобной автогенерации sql не будет. Структура будет проще, так же интерфейс редактирования таких справочников может быть один вместо кучи форм и добавлять новые справочники будет сильно проще (хотя с точки зрения разработки нет особой разницы, один insert ты написал или create table перед этим)

    3. не хранить справочники в базе данных вообще, т.е. за значение справочников отвечает бакэнд (хранятся в статичных файлах или в коде) самый дибильный подход, редактировать такие справочники скорее всего только руками в конфигах/исходниках. Недостатки - база данных совсем не будет знать ничего о значениях и не сможет ни проконтролировать ни помочь с запросами
    Но это позволит снять немного нагрузки с базы данных, сделает структуру проще и позволит перенести управление значениями справочников на откуп ide редактора (если хранить значения справочников в коде, можно дать значениям имена переменных, так как в коде часто их так или иначе заводить придется)

    Лично я третьим подходом в чистом виде не пользовался, но у меня был набор скриптов, которые из справочников в базе данных формировали код с инициализацией констант и их именами для приложения (сами справочники приложением редактироваться не могли) и был соблазн перевести эту часть базы из 'оперативной' в 'для разработчика', так как справочник это что то - отвечающее за отображение информации, но не за бизнеспроцессы (ну примерно как языковые файлы для приложения, не хранить же переводы строк интерфейса тоже в базе, ну так и справочники смогут работать как часть этого интерйфейса и тоже может требовать перевода).
    Ответ написан
    4 комментария
  • Как генерировать красивый PDF с помощью PHP?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Самый правильный путь генерация не на основе html а с нуля
    Посмотрите сюда https://habr.com/ru/post/31438/

    upd https://stackoverflow.com/questions/7364/edit-pdf-...

    Для вас есть 2 пути :
    Создать шаблон pdf загрузить его и четко по месту разместить текст
    Второй вариант это с 0 сформировать весь репорт.

    В любом случае рабочий процесс следующий: дизайнер отрисовывает макет, а вы вычисляете размеры плейсхолдеров и заполняете их в коде.
    Ответ написан
    8 комментариев
  • Почему неправильно работает сравнение?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос
    Сколько строк вернёт база данных, если в запрос передать несуществующий логин?

    Дополнительный вопрос
    Какой смысл вообще городить авторизацию, если любой придурок авторизуется без всякого пароля, через SQL инъекцию?

    Подробнее про вопрос секьюрности этого куска:
    Если переменная подставляется напрямую в запрос, то это значит что в нее можно дописать SQL, который будет делать совсем не то, что ожидалось.
    Например, если вместо имени пользователя написать что-то вроде имя' AND LEFT(password, 1) = 'a
    то тогда код напишет "Лоигн занят" если первая буква пароля - "а". Пара десятков таких запросов - и первую букву мы уже угадали. Тем же способом же достаём остальные и вот мы получили пароль любого клиента.

    Чтобы этого не было, переменные никогда не пишут в запрос напрямую. а передают отдельно.
    как это делать - я уже писал подробно, правда в ответе на другой вопрос

    Здесь надо делать так

    $input = json_decode(file_get_contents("php://input"), true);
    
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect(*информация БД*);
    $link->set_charset("utf8mb4");
    
    $stmt = $link->prepare( "SELECT login FROM sn_users WHERE login=?");
    $stmt->bind_param("s", $login);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    if ($row) {
        echo "Лоигн занят";
    } else {
        echo "Лоигн свободен";
    }
    Ответ написан
    7 комментариев
  • Как правильно связать php сайт с mysql?

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

    Чтобы соединить сайт с mysql, в РНР вообще-то есть два API - mysqli и PDO. Несколько лет назад с mysqli вообще невозможно было нормально работать, но на данный момент они выровнялись, хотя PDO все равно удобнее, по трем причинам
    1. Единый интерфейс при работе с различными СУБД (неактуально, если mysql для нас является синонимом слова база данных)
    2. Набор функций-хелперов для получения данных из БД в различных форматах (при желании легко воспроизводится вручную)
    3. Именованные плейсхолдеры (для некоторых это главная причина использовать PDO)

    Но в целом, как я говорил выше, сейчас можно использовать любое API. Главное - не использовать тот древний говнокод, который приведён в вопросе.

    1. Создаём файл`config.sample.php` куда кладем все настройки приложения, в том числе базы данных
    return [
    	'db' => [
    		'host' => '127.0.0.1',
    		'username' => '',
    		'password' => '',
    		'dbname' => '',
    		'port' => 3306,
    		'charset' => 'utf8mb4',
    	],
    ];

    2. В файле, который включается во все скрипты сайта, добавляем код
    if (!file_exists('config.php'))
    {
    	throw new \Exception('Create config.php based on config.sample.php');
    }
    $config = require 'config.php';

    3. И дальше в этом же файле пишем собственно нормальный код подключения к БД
    либо к mysqli
    // включаем режим информирования об ошибках
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    // подключаемся к серверу
    $dbc = $config['db'];
    $db = new \mysqli($dbc['host'], $dbc['username'], $dbc['password'], $dbc['dbname'], $dbc['port']);
    // не забываем установить кодировку, чтобы не было ошибок с кракозябрами
    $db->set_charset($dbc['charset']);

    либо к PDO
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dbc = $config['db'];
    $dsn = "mysql:host=$dbc[host];dbname=$dbc[dbname];charset=$dbc[charset];port=$dbc[port]";
    $pdo = new \PDO($dsn, $dbc['username'], $dbc['password'], $options);

    После того как будет освоена работа с системой контроля версий (а по-хорошему это надо было сделать уже давно) добавляем config.php в файл .gitignore
    Таким образом на каждом хосте, где исполняется этот код, будет собственный файл с настройками, создаваемый по образцу из config.sample.php

    Да, и Очень Важное Дополнение:
    почему нельзя сделать 1 соединение для сайта и не тратить каждый раз время на коннект к БД?

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    MySQL 8.0 и выше
    WITH RECURSIVE `cte` (`date`) AS (
      SELECT :from_date
      UNION
      SELECT `date` + INTERVAL 1 DAY
        FROM `cte`
        WHERE `date` < :to_date
    )
    SELECT `cte`.`date`,
           IFNULL(`s`.`count`, 0) AS `joined_count`,
           IFNULL(`u`.`count`, 0) AS `left_count`
      FROM `cte`
      LEFT JOIN (
        SELECT `joined_date`, COUNT(*) AS `count`
          FROM `table`
          WHERE `joined_date` BETWEEN :from_date AND :to_date
          GROUP BY `joined_date`
      ) AS `s` ON `s`.`joined_date` = `cte`.`date`
      LEFT JOIN (
        SELECT `left_date`, COUNT(*) AS `count`
          FROM `table`
          WHERE `left_date` BETWEEN :from_date AND :to_date
          GROUP BY `left_date`
      ) AS `u` ON `u`.`left_date` = `cte`.`date`
    Ответ написан
    Комментировать
  • Изучаю java 3 й месяц, прошу помочь советом куда двигаться и можно ли начать искать стажировки или пока рано?

    @AndrewRusinas
    Это частый вопрос, а ответ один и тот же вне зависимости от языка/стека:
    Просто начни проходить собесы. Узнаешь о том, какие у тебя слабые места и что по факту требуется работодателям, на десятый собес уже сможешь получить какой-никакой оффер.
    Ответ написан
    Комментировать
  • Как подключить Oracle Database к Go?

    @evgensoft
    Необходимо в блок import добавить подключение конкретного драйвера, например -
    _ "gopkg.in/goracle.v2"

    Открытие подключения примерно так -
    db, err := sql.Open("goracle", "user/pass@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=hostname)(PORT=port)))(CONNECT_DATA=(SERVICE_NAME=sn)))")
    Ответ написан
    Комментировать
  • Как убрать readonly в Postgresql?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Postgresql вам редактировать и не препятствует. Раз вы смогли сделать create table - значит база не в read only режиме. Напишите соответствующий update и выполните.

    А вот вашему GUI клиенту скорей всего не нравится отсутствие primary key.
    Ответ написан
    Комментировать