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

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

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

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Ничего сложного... Например, есть такая таблица:

    Code:
    CREATE TABLE `some_table` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
    `some_field1` VARCHAR( 255 ) NOT NULL ,
    `some_field2` VARCHAR( 255 ) NOT NULL ,
    PRIMARY KEY ( `id` )
    )
    и есть такой файл:

    Code:
    1,Test content 1.1,Test content 1.2
    2,Test content 2.1,Test content 2.2
    3,Test content 3.1,Test content 3.2
    4,Test content 4.1,Test content 4.2
    5,Test content 5.1,Test content 5.2
    6,Test content 6.1,Test content 6.2
    7,Test content 7.1,Test content 7.2
    8,Test content 8.1,Test content 8.2
    
    то в самом просто случае, запросом вида:

    Code:
    LOAD DATA INFILE 'С:\\Temp\\some_file.txt' INTO TABLE some_table
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    Можно провести вставку записей в таблицу из файла, где , (запятая) указывает символ которым разделены значения полей, а \n (перевод строки) указывает символ которым разделены строки.
     
  2. Glazz

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

    Joined:
    9 Aug 2008
    Messages:
    116
    Likes Received:
    7
    Reputations:
    0
    а если я хочу не из файла, а из переменной залить в бд? допустим я состряпаю char todb[4000] в котором допустим так же все написано.
     
  3. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Ну запиши это в файл и вставляй... MySQL может вставлять данные из файловой системы, или данные, переданные непосредственно в запросе, ему по уху, что ты там себе за переменные придумал и что ты с ними собираешься делать. У MySQL все команды манипулирования данных чётко документированы. Ничего нового ты не найдёшь.
     
  4. Byrger

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

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    В чём ошибка?
     
  5. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    INSERT INTO название_таблицы (p_res1,p_res2,p_res3,p_res4) VALUES (1,2,3,4) or die('Ошибка' . mysql_error());
     
  6. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    чет я туплю , есть таблица users
    id ... bonus
    в бонус надо добавлять текст
    INSERT INTO users ('bonus') VALUES ('".$values."') WHERE id = 'id'
    понимаю что where там не кстати , как его составить правильно?

    п/с не пинайте)
     
  7. VDShark

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

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    2 bxN5
    UPDATE
     
  8. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    а именно? как что бы значение добавлялось , а не обновлялось ?
     
  9. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    INSERT INTO users ('bonus') VALUES ('".$values."')

    просто, без where

    where нужно только когда update или select, insert просто добавляет новую запись, id автоматически присваивается следующее, если поле id аутоинкримент (автоматически возрастающее). Какая тебе разница, какое там будет id, если ты просто ДОБАВЛЯЕШЬ новую запись
     
  10. laedafess

    laedafess Member

    Joined:
    11 Feb 2009
    Messages:
    70
    Likes Received:
    29
    Reputations:
    15
    Code:
    INSERT INTO `users` (`bonus`) VALUES ('".$values."')
    P.S. ой, мну опередили=(
     
  11. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    не не так
    щас попробую объяснить полностью
    в таблице юзерс есть поле бонус , в которое нужно записать ник из своей переменной , но записать ник человку с id совпадающему со своим значением(хранится в куках)
    Отлично работает в написанном сразу запросе
    PHP:
    $query=("UPDATE users SET bonus='".$ss."' WHERE user_id ='".$_COOKIE['ref']."'") ;
    но дело в том , что в последующих запросах естественно значение предыдущее затирается(set все таки) , а мне нужно что бы бралось значение которое уже лежит в ячейке bonus и к нему добавлялось из переменной $ss ну и сохранялось естестно
     
  12. Taylorith

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

    Joined:
    6 Sep 2006
    Messages:
    172
    Likes Received:
    11
    Reputations:
    0
    Дарова , есть проблема, имеется запрос весящий 112 мегов, запускаю мускул захожу через хейди и пытаюсь сделать запрос , чеастно гворя не выходит , зависает и очень долго все это происходит, вообще так и не получилось сделать запрос ни через хейди ни через навикат, неужели нету других методов , я помню делали как то через бат файлы.
    Или другой способ разделить запрос на файлы состоящие как минимум из двух мегов каждый и по одному сделать , но вручную эт ппц как долго ,есть ли способ ?? помогите пожалуйста или мне придется вручную делить файл.
     
  13. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    mysql -u root base < ./dump.sql
     
  14. Taylorith

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

    Joined:
    6 Sep 2006
    Messages:
    172
    Likes Received:
    11
    Reputations:
    0
    изхвини если буду выглядить идиотом, но все же, где это делать ? (в командной строке мускула то есть захожу в пуск выбираю мускул и MySQl command line)потом вписываю пароль? если я правильно понял то так?
    mysql -u root < ./мой запрос.sql так?
     
    #554 Taylorith, 10 Apr 2009
    Last edited: 10 Apr 2009
  15. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    так , но в обычной командной строке (выполнить-cmd)
     
  16. Taylorith

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

    Joined:
    6 Sep 2006
    Messages:
    172
    Likes Received:
    11
    Reputations:
    0
    не в обчной не получается , я тока что в командой строке скуля сделал
    вот так Source C:/запрос.sql и получилось.
     
  17. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    $query=("UPDATE users SET bonus=bonus+'".$ss."' WHERE user_id ='".$_COOKIE['ref']."'") ;

    чото так типо

    а поле bonus перед этим сделать равно 0. Если там просто пусто, то просто сделать такой запрос предварительно:

    $query=("UPDATE users SET bonus=0") ;
     
    #557 Pashkela, 10 Apr 2009
    Last edited: 10 Apr 2009
  18. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    bonus+'".$ss."' думаю нельзя строка+строка


    попробовал значение так 0 и остается
     
    #558 bxN5, 10 Apr 2009
    Last edited: 10 Apr 2009
  19. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    в bonus числа???? $ss - число??? Тогда можно, 100%

    скорее всего просто это условие не срабатывает:

    WHERE user_id ='".$_COOKIE['ref']

    врядли ты в ref хранишь id:) Или оно там с пробелами, или еще чонить - в общем треба предварительная обработка всего + тщательная проверка условий + в конце запроса добавь

    or die ("Фиг там" . mysql_error());

    и сразу увидишь, правильные ли у тебя условия

    Чтобы проверить рабочесть этого кода

    $query=("UPDATE users SET bonus=bonus+'".$ss."' WHERE user_id ='".$_COOKIE['ref']."'") ;

    вместо WHERE user_id ='".$_COOKIE['ref']."'"

    вставь WHERE user_id =1"

    т.е. просто явным образом укажи id того, кому бонус начисляешь, а дальше думай
     
    #559 Pashkela, 10 Apr 2009
    Last edited: 10 Apr 2009
  20. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    работает запрос
    в том то и дело что в bonus и в $ss текст
     
Thread Status:
Not open for further replies.