[sql] Вопросы по БД

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    я же сказал, условие такое что неизвестны поля!! есть только * и всё
     
  2. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    И кто мешает их узнать-то? Я привёл 2 запроса, первый на вывод списка полей.
     
  3. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    Какая разнича кто мешает? 4тая ветка мускула мешает, я задал вопрос с опрелённым условием, зачем его перекручивать да ещe и спорить?
     
  4. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    А сделать одним запросом select *, потом из fetch-массива вытащить все названия столбцов тоже 4-я ветка мешает?

    Никак ты не сделаешь concat(*) без названия столбцов.
     
  5. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    В PHP есть такая функция называется mysql_fetch_field она возвращает информацию о колонке из результата запроса в виде объекта, таким способом ты сможешь узнать названия колонки и делать с ней всё что хочешь примеров уйма.
     
  6. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    мне нужно без вмешательства в php только mysql я уже писал

    ну а кроме concat() нету ничего другого чтобы могло помоч?
     
  7. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    Без названия колонок нет.
     
  8. nikp

    nikp Banned

    Joined:
    19 Sep 2008
    Messages:
    328
    Likes Received:
    591
    Reputations:
    764
    Можно и с concat(), если знать количество колонок в таблице.

    Пример, в таблице `t1` три колонки, тогда конкатенацию всех колонок, не зная их имени можно сделать так:
    Code:
    select concat_ws(0x3a,c1,c2,c3) from (select 1 c1,2 c2, 3 c3 union select * from t1)k
     
    1 person likes this.
  9. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    мм, интересный вриант
    PHP:
    <?
    include(
    "../dbconnect.php");
    $sql mysql_fetch_assoc(mysql_query("select concat_ws(0x3a,c1,c2,c3,c4) from (select 1 c1, 2 c2, 3 c3, 4 c4 union select * from `news` where `id` = '6')k"));
    print_r($sql);
    ?>
    ответ
    PHP:
    Array
    (
        [
    concat_ws(0x3a,c1,c2,c3,c4)] => 1:2:3:0000-00-00
    )
    данных из таблице нет, почему? я непавильно что-то сделал?
     
    #1889 qaz, 12 Mar 2013
    Last edited: 12 Mar 2013
  10. nikp

    nikp Banned

    Joined:
    19 Sep 2008
    Messages:
    328
    Likes Received:
    591
    Reputations:
    764
    Да, не захотел разобраться, что делает запрос, не захотел даже посмотреть - какие данные он возвращает.

    Ты не новичек и не двоечник, чтобы применять тактику скрипт-кидди.
    Запрос простой, чтобы разобраться - достаточно базовых знаний SQL-запросов.
    Совсем не трудно было посмотреть результаты в mysql -uroot -p или запустить PhpMyAdmin.

    Твой скрипт возвращает только первую запись результата запроса (rtfm mysql_fetch_assoc()), которая есть мусор, нужные данные в строке ниже.
    Используй limit или group_concat(), чтобы увидеть конкретную строку или все данные.

    PHP:
    include("../dbconnect.php"); 
    $sql "select concat_ws(0x3a,c1,c2,c3,c4) from (select 1 c1, 2 c2, 3 c3, 4 c4 union select * from `news` limit 1,30)k"
    $r mysql_query($sql);
    while (
    $row mysql_fetch_assoc($r))
        
    print_r($row);
    }
     
  11. Wetal

    Wetal New Member

    Joined:
    6 Mar 2013
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    [ПРОБЛЕМА С КОДИРОВКОЙ] Пытался вывести таблицу из mysql (в денвере 3) На экран выводится это: �����. Я уже и незнаю что делать. Но скорее всего проблема в кодировке которая выставлена в phpmyadmin. Потому как остальной текст выводится нормально, а вот из базы данных - такая хрень. Поставил версию 3.5.7 - не помогает. А выводил я так:
    <?php
    /* mysql */
    $dat = mysql_connect ("localhost", "AD_min", "12345");
    mysql_select_db ("firstbd",$dat);

    $result = mysql_query ("SELECT * FROM zalypa",$dat);
    $myrow = mysql_fetch_array($result);

    do {
    echo "Сотрудник № - ".$myrow ['id']."<br>";
    echo $myrow ['name']."<br>";
    echo $myrow ['last_name']."<br>";

    printf ("Сотрудник № - %s<br>%s<br>%s<br>%s", $myrow ['id'], $myrow ['name'], $myrow ['last_name'], $myrow ['dol']);
    }

    while ($myrow = mysql_fetch_array($result));

    ?>

    PS: Кодировка: php файла:utf-8, B phpmyadmin на самой главной странице (основные настройки) -utf-8 general-ci. Кодировка таблицы (написано сравнение)- utf-8 general-ci. А вот самих строчек в таблице - cp1251_general_ci. На вкладке "операции" - тоже cp1251_general_ci.

    PS: Я уже пробовал вместо $dat обычный $db ставить. Не помогает. Что чделать чтобы было нормально? Заранее спасибо!
     
  12. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    В самы верх скрипта поставь
    Code:
    header('Content-Type: text/html; charset=utf-8')
    и проверь, если не пойдёт смени кодировку в хейдере на 1251. И ещё вот в код сайта, после функций mysql_connect и mysql_select_db добавляем строчку mysql_query("SET NAMES utf8");
     
    #1892 DwH, 15 Mar 2013
    Last edited: 15 Mar 2013
  13. Wetal

    Wetal New Member

    Joined:
    6 Mar 2013
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    Cпасибо! SET NAMES utf8 помог)
     
  14. Kruzak

    Kruzak New Member

    Joined:
    21 Dec 2010
    Messages:
    126
    Likes Received:
    4
    Reputations:
    1
    При регистрации пользователя есть проверка на существование такого же email уже в базе

    т.е. два sql запроса, 1. проверка, 2. добавление нового пользователя

    надо ли два этих действия объединить в одну транзакцию или и так пойдет?

    правильно я понимаю что теоретически если отправить 2 запроса на регистрацию одновременно, можно зарегистрировать 2 аккаунта с одинаковыми email?
     
  15. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Kruzak
    Да, это легко реализуемо при неправильно созданной базе. Однако вопрос - действительно ли это риск для вашего приложения?

    Легкий фикс - добавить на поле в БД аттрибут UNIQUE и избавиться от первого запроса проверки. Достаточно просто инсертить и проверять mysql_affected_rows
     
    _________________________
  16. Kruzak

    Kruzak New Member

    Joined:
    21 Dec 2010
    Messages:
    126
    Likes Received:
    4
    Reputations:
    1
    Gifts, Спасибо, забыл про UNIQUE)

    еще вопрос, есть таблица - там записи

    ID | DATE | VALUE

    date в формате unix time

    подскажите можно ли средствами mysql сделать выборку и вывести массив с суммой значений VALUE распределенный по неделям

    на выходе мне нужен такой массив:

    1 неделя этого года = 1200
    2 = 2740
    3 = 2500
    4 = 3200


    и т.д.
     
  17. Kruzak

    Kruzak New Member

    Joined:
    21 Dec 2010
    Messages:
    126
    Likes Received:
    4
    Reputations:
    1
    сейчас пишу движок для онлайн игры
    никак не могу решить как хранить деньги в бд, какой тип выбрать

    посоветуйте

    decimal 11,2 или int 11
    в decimal хранить как 55.2
    или в int хранить как 55200 (55.2 * 100), при выводе уже соответственно делить на 100

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

    почему то боюсь что с decimal возникнут проблемы когда нужно будет операции производить процентные - округления и т.п.
     
  18. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    Могу сказать по опыту в таких случаях я всегда использую int при всех действия что ты указал проблем не возникало.
     
  19. tester_new

    tester_new Elder - Старейшина

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24
    Помогите определить тип базы:

    http://zalil.ru/upload/34386477

    буду очень благодарен!!
     
  20. DwH

    DwH New Member

    Joined:
    21 Feb 2012
    Messages:
    60
    Likes Received:
    2
    Reputations:
    0
    Я думаю этот файл генерируется какой то программой и он не относится к какому то типу базы данных.
     
Thread Status:
Not open for further replies.