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

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

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

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Может быть, автоинкремент повесить на поле?
     
    1 person likes this.
  2. dimash

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

    Joined:
    14 Apr 2008
    Messages:
    78
    Likes Received:
    2
    Reputations:
    0
    Объясните, пожалуйста такое. 1, 2 одного и тоже. Какая прицнипиальная разница?
    PHP:
    $query "SELECT password FROM users WHERE name='".$_POST['login']."'";  
        
    $login_authentication mysql_query($query);  
        if(
    mysql_num_rows($login_authentication) > 0)  
        {  
           
    // Получаем пароль  
           
    $password mysql_result($login_authentication,0);  
           
    // Сравниваем пароль из базы данных и введённый посетителем  
           
    if ($_POST['password'] == $password)   
           { 
                 echo 
    "Hello, $login"
            }
       } 
    PHP:
     $query "SELECT * FROM users where name='".$login."' and pass = '".$password."';
     
  3. crazy~driver

    crazy~driver Member

    Joined:
    21 Dec 2008
    Messages:
    97
    Likes Received:
    14
    Reputations:
    4
    Привет подскажите, есть ли мюслях запрос, чтобы искал заданное значение по всей бд
     
  4. dimash

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

    Joined:
    14 Apr 2008
    Messages:
    78
    Likes Received:
    2
    Reputations:
    0
    SELECT * FROM *
    просто
     
  5. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    Принципиальной разници нету. Во втором варианте код просто короче получиться.
     
  6. qW1zer

    qW1zer Member

    Joined:
    24 Aug 2009
    Messages:
    129
    Likes Received:
    15
    Reputations:
    5
    Подскажите какой параметр или что либо еще нужно поставить чтобы записи в базе формировались по значению,к примеру в поле А значение 5,а в боле B значение 7
    Как сделать чтобы B соответственно выводилось впереди?
    Если так нельзя,подскажите что можно с таким выводом в PHP сделать
     
  7. Forcer

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

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    такая таблица?
    |NAME|VALUE|
    | A | 5 |
    | B | 7|
    если да, то вот запрос:
    SELECT * FROM TABLE_NAME ORDER BY VALUE DESC
     
  8. harom

    harom New Member

    Joined:
    15 Jan 2009
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    подскажите в чём разница:

    PHP:
    $userNames = array('MITIBITI''tabu','Dariy','Tema');
    и

    PHP:
    $resmysql_query ("SELECT login FROM user ",$db);
    $userNamesmysql_fetch_array($result);

    почему из второго варианта извлекается только одно значение масива? как извлечь в масив все не применяя цикл?
     
  9. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Потому что
     
  10. Greenkas

    Greenkas Banned

    Joined:
    24 Apr 2009
    Messages:
    7
    Likes Received:
    2
    Reputations:
    0
    harom, без цикла можно вывести только функцией print_r($userNames)
     
  11. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    так как ты написал во втором варианте. mysql_fetch_array сама возвращает масив из результата запроса. $userNames будет масивом
     
  12. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    есть столбец COL1 в таблице TABLE1 в котором скажем содержимое 1,2,3,4
    и второй столбец COL2 в другой таблице TABLE2 в котором содержимое 1,2,3

    мне нужно сднлать чтото типо такого одним запросом:

    WHERE 1 IN(1,2,3,4)
    WHERE 2 IN(1,2,3,4)
    WHERE 3 IN(1,2,3,4)

    какбы разделить данные в COL2 по запятой и проверить существует ли он в COL1
     
  13. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    LEFT/RIGHT JOIN?
     
  14. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    krypt3r нет .. ты не понел дело не в том чтоб взять данные с двух таблиц а в том чтоб проверить есть ли хотябы одно совпадение из COL1 в COL2 есть ли в COL2 хотябы одна из этих цифр 1,2,3 а в COL2 данные вида 1,2,3,4,5,6

    типо совпадения есть и 1 есть в COL2 и 2 и 3
     
  15. nikp

    nikp Banned

    Joined:
    19 Sep 2008
    Messages:
    328
    Likes Received:
    591
    Reputations:
    764
    Второй скрипт уязвим для обхода авторизации по типу
    login="' or 1=1 --
     
  16. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    Народ, есть запрос:
    Можно ли изменить запрос так, что бы он при выборе строк смотрел, что за `id`, если оно равно, например, 10, то к результату `cena_bannera` прибавлял бы, например, 5 (прибавлял бы к результату, а не делал UPDATE поля!!!) и, естественно, сортировал бы результат (т.е. ORDER BY `cena_bannera` DESC) с учётом изменённого `cena_bannera`?

    P.S. Знаю, есть в MySQL IF(), но каким боком его там заюзать...
     
    #816 Architek86, 14 Nov 2009
    Last edited: 14 Nov 2009
  17. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    "SELECT `id`,if(`id` = 10, `cena_bannera` + 5, `cena_bannera`) as `cb`,
    `date_cena` 
    FROM `puppy_users` 
    WHERE `my_porodki` like '%" . $pord . "%' 
    AND `act_bannera` = 1 
    ORDER BY `cb` DESC,`date_cena` ASC"
    
     
  18. felix_

    felix_ New Member

    Joined:
    25 Sep 2008
    Messages:
    24
    Likes Received:
    3
    Reputations:
    0
    PHP:
    $one mysql_qurey("SELECT * FROM user WHERE id=1 LIMIT 1",$connect);
    $name1=mysql_fetch_array($one);
    echo 
    $name1[name];
    PHP:
    $one mysql_query("SELECT name FROM user WHERE id=1 LIMIT 1",$connect);
    $name2=mysql_fetch_array($one);
    echo 
    $name2[name];
    по идее второй код занимает меньше памяти? или нет смысла выбирать столбцы только те которые нужны?
     
  19. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    думаю есть смысл, и дело скорее не в памяти, а скорости sql-запроса + нагрузка на БД

    тем более если в итоге нужно только name выцепить
     
  20. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Всегда стараюсь выцепить только те колонки, которые действительно нужны. Имхо не слишком целесообразно брать все 30 полей из таблицы, если нужно на самом деле одно-два-три
     
Thread Status:
Not open for further replies.