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

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

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

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    $in_login = $_POST['login'];
    $in_pas = $_POST['pas'];

    $sql_query = "SELECT * FROM `user` where `user_login` = '$in_login' and `user_password` = '$in_pas'";
     
  2. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    При переносе форума vBulletin столкнулся с небольшой траблой, вместо букв "ш" пишет "�?"
    Что ни так? Хелп!!! :(
     
  3. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    Обычно подобное можно увидеть когда текст в UTF8, а БД настроена на cp1251;
     
  4. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Gray_Wolf, да utf и cp1251 это ясно. Как дамп исправить?
    Тут есть статья http://hostinghelp.biz/content/решение-проблем-с-нарушением-отображения-букв-ш-и-и-в-резултате-неудачной-перекодировки-mysq
    но там перл :(
     
  5. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    Ну а что вам мешает сделать дамп и поменять кодировку в какомнить notepad++?

    Хотя если любите извращения по можете попробовать что-то типо:
    PHP:
    $str=str_replace («И»,"& #1048;",$str);
    $str=str_replace («ш»,"& #1096;",$str);
    только между "&" и "#" пробел уберите.
     
  6. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Нет смысла, уже менял, нету букв "ш" и "И" вместо них квадраты и знаки вопроса. Это болезнь. Как бороться?
     
  7. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Поменять все квадраты и знаки вопроса на "ш" и "и" выцепив hex-код квадратов и знаков вопросов
     
  8. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Pashkela, а как их выцепить?
     
    2 people like this.
  9. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    писал вроде уже именно тебе -
    1. Переводим весь текст hex:

    $text = bin2hex($text);

    2. Потом примерно в таком цикле:
    PHP:
    $count strlen($text);
    for (
    $i=0;$i<$count;$i++)
      if (
    $text{$iтут условие) {
         .........

    // Только тут не забываем, что hex любого символа состоит из двух значений, для условий в цикле
      
    }
    }
    диапазон "нормальных букв" вернее их hex-кодов известен? Известен. Значит пишем функцию, посимвольно перебирающую текст, выбирающую hex-значения не из диапозона кроме сиволов "пробел" и "перенос строки" и прочего дерьма (спец символов). Получим твои "ш" и "и" в непонятной кодировке или просто засранные при дампе, потом обычный str_replace непонятных символов на понятные hex коды "ш" и "и", потом преобразование полученных данных в хексе обратно в читабельный вид вот такой функцией:

    PHP:
    function hex2bin($hh)  {
      if (!
    is_string($hh)) return null;
      
    $rr='';
      for (
    $aa=0$aa<strlen($hh); $aa+=2) { $rr.=chr(hexdec($hh{$aa}.$hh{($aa+1)})); }
      return 
    $rr;
    }
    ЗЫЖ Или еще проще - просто выкупаешь hex-коды этих квадратов и знаков вопросов, весь текст в hex (как описано выше), потом сразу str_replace, потом обратно в текст (функция выше)
     
    #749 Pashkela, 11 Sep 2009
    Last edited: 11 Sep 2009
    2 people like this.
  10. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Проблема решена!

    Code:
    /* 
    * Исправление кодировки букв "ш" и "И" в MYSQL 
    * автор: Nc_Soft 
    * 18.07.09 
    */ 
    
    /* 
    Частенько встречается при переносе бд, либо при шаманстве с кодировками 
    буквы "ш" и "И" оказываются битыми (речь идет о utf-8 конечно) 
    буква "ш" = chr(209).chr(63) / правильно chr(209).chr(136) 
    буква "И" = chr(208).chr(63) / правильно chr(208).chr(152) 
    Чтобы пофиксить делаем 2 запроса 
    */ 
    
    UPDATE `tbl` SET `pole` = REPLACE( 
    `pole`,  
    CONCAT( CHAR(209), CHAR(63) ),  
    CONCAT( CHAR(209), CHAR(136) ) 
    ); 
    
    UPDATE `tbl` SET `pole` = REPLACE( 
    `pole`,  
    CONCAT( CHAR(208), CHAR(63) ),  
    CONCAT( CHAR(208), CHAR(152) ) 
    );
    :)
     
    #750 mff, 11 Sep 2009
    Last edited: 11 Sep 2009
    3 people like this.
  11. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    Как можно узнать кодировку базы данных?
    Каким запросом?
     
  12. PvgValo

    PvgValo Active Member

    Joined:
    1 Aug 2009
    Messages:
    548
    Likes Received:
    160
    Reputations:
    57
    Введи:
    show variables;
    И будет тебе счастье
     
  13. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    Народ, дано в MySQL поле типа text. Как добавлять в него данные так, что бы они не заменяли содержимое поле, а дополняли его, т.е. приписывались бы к содержимому вконце?
     
  14. REBUUS

    REBUUS Active Member

    Joined:
    6 Apr 2009
    Messages:
    314
    Likes Received:
    111
    Reputations:
    9
    как в условие селект игнорировать регистр букв
     
  15. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    select LOWER(...)
     
    1 person likes this.
  16. REBUUS

    REBUUS Active Member

    Joined:
    6 Apr 2009
    Messages:
    314
    Likes Received:
    111
    Reputations:
    9
    select * from .. where LOWER(имя поля???) =$var так ???
     
  17. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ну да
     
  18. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    mysql

    Добрый вечер уважаемые гуры mysql! :)
    У меня такой вопросец: можно ли сослаться к столбцу "country" таблички не по имени а типа вот так -
    Code:
    ORDER BY `column[4]`
    ?

    Или это область фантастики? :)
     
  19. VDShark

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

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    траляля ORDER BY 4
     
  20. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    И будет сортировать по четвёртому столбцу? Или пятому?
     
Thread Status:
Not open for further replies.