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

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

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

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

    Joined:
    2 Jun 2008
    Messages:
    35
    Likes Received:
    1
    Reputations:
    0
    Есть вот такой кусок кода:
    Code:
    $user=$row['nick'];
    if (preg_match("/me", $msg, $msg_1))
    {
    $msg=str_replace ("/me","<i>".$user."",$msg);
    $user="";
    }
    
    он не работает на второй строчке

    надо: Если строка $msg начинается на "/me" то выполнить действие ниже
     
  2. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    1. Неверная регулярка.
    2. Неверная тема
     
  3. vorona

    vorona Member

    Joined:
    7 Sep 2009
    Messages:
    392
    Likes Received:
    7
    Reputations:
    1
    1. При регистрации в поле записывается логин, например, XxX. Почему в форме входа на сайт катит также xxx, XXx? т.е. нету чувствительности к регистру.
    2. Если при запросе WHERE id не существует, то выводится ошибка (предупреждение). Как правильно проверять поле на существование?
    3. Какая пропорциональная зависимость между проиндексированным столбиком и не проиндексированным?
     
    #983 vorona, 14 Jan 2010
    Last edited: 14 Jan 2010
  4. GlooK

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

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Скорей всего функция сравнения (на PHP, к примеру) логина с эталоном, сравнивает их в нижнем регистре.
     
  5. vorona

    vorona Member

    Joined:
    7 Sep 2009
    Messages:
    392
    Likes Received:
    7
    Reputations:
    1
    Ну я перед этим строку обрабатываю htmlentities в вин-1251 кодировке. Это ж не может влиять?
     
  6. GlooK

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

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Кусок кода выложи хотя бы...
     
  7. vorona

    vorona Member

    Joined:
    7 Sep 2009
    Messages:
    392
    Likes Received:
    7
    Reputations:
    1
    PHP:
    function xxx($var)
                  {
    $var=htmlentities($varENT_QUOTES'Windows-1251');
                  return 
    $var;
                  }


    $_POST array_map("xxx",$_POST);

    ..................


    if(
    count($_POST)>0){

    $_POST['login']=substr($_POST['login'],0,20);
    $_POST['pass']=substr($_POST['pass'],0,20);


    $sum=0;

            echo 
    '<center><b>При ыходе были допущены такие <font color="red">ошибки</font>:</b></center><br>';

                      if(!isset(
    $_SESSION['captcha_keystring']) || $_SESSION['captcha_keystring'] !== $_POST['keystring']){

                  echo 
    '<br><font color="red">Неверно введен проверочный код.</font><br>';
                   
    $sum=$sum+1;
                 }

                      if (!isset(
    $_POST['login']) || strlen($_POST['login'])<3)
                         {
                          echo 
    '<br><font color="red">Не введён логин или он слишком короткий.</font><br>';
                          
    $sum=$sum+1;
                         }

                      if (!isset(
    $_POST['pass']) || strlen($_POST['pass'])<3)
                         {
                          echo 
    '<br><font color="red">Не введён пароль или он слишком короткий.</font><br>';
                          
    $sum=$sum+1;
                         }
                      

                         if (!
    preg_match("/^([a-zA-Z0-9]+)$/"$_POST['login']))
                 {
                             echo 
    '<br><font color="red">В поле "логин" присутствуют недопустимые символы.</font><br>';
                             
    $sum=$sum+1;
                 }
                         if (!
    preg_match("/^([a-zA-Z0-9]+)$/"$_POST['pass']))
                 {
                             echo 
    '<br><font color="red">В поле "пароль" присутствуют недопустимые символы.</font><br>';
                             
    $sum=$sum+1;
                 }


                  
    $sql 'SELECT * FROM `users` WHERE `login`="'.$_POST['login'].'"';

                   
    $r=mysql_query($sql,$conn);


                   
    $row=mysql_fetch_row($r);


                           if (
    $row[1]!=="" && isset($row[1]) && $row[2]!==md5($_POST['pass']))
                  {

                           echo 
    '<br><font color="red">Неверный логин или пароль.</font><br>';
                           
    $sum=$sum+1;
                  }


                           if (!isset(
    $row[1]))
                  {

                           echo 
    '<br><font color="red">Неверный логин или пароль.</font><br>';
                           
    $sum=$sum+1;
                  }



        if (
    $sum==0) {


                          
    действия

                          
    }




    }
     
  8. vorona

    vorona Member

    Joined:
    7 Sep 2009
    Messages:
    392
    Likes Received:
    7
    Reputations:
    1
    Всё, сам нашел ошибку.
    Ответьте пжлст на 2 и 3 вопросы.
     
  9. Freakazoitt

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

    Joined:
    2 Jun 2008
    Messages:
    35
    Likes Received:
    1
    Reputations:
    0
    Вопрос:

    В таблице есть ячейка id. Она без auto_increment (Он мешает другой функции)
    Надо: вписать строку и присвоить ячейке id число, так, как это делает auto_increment
    напр. если в предыдущей строке id было 14, зваисываем 15
    как это делается?
     
  10. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    vorona

    2. describe table column и смотреть что вернет (аналог show columns)

    3. не понял вопрос?тт если это то, о чем я подумал - любые селекты по проиндексирвоанны намного быстрее.)

    Freakazoitt

    селекти max(id) и увеличивай его на 1...
     
  11. PEPSICOLA

    PEPSICOLA . . . . . 2L . . . . .

    Joined:
    14 Oct 2004
    Messages:
    1,025
    Likes Received:
    823
    Reputations:
    368
    Подскажите пожалуйста какие параметры у стандартной базы MySQL на английский язык.

    Type: MyISAM
    Charset: cp1250 - Windows Central European
    Collation: cp1250_general_ci

    ?
     
  12. vorona

    vorona Member

    Joined:
    7 Sep 2009
    Messages:
    392
    Likes Received:
    7
    Reputations:
    1
    Кодировка базы win1251 general-ci.
    Почему данные сохраняются в виде знаков этой кодировки?

    И в какой лучше кодировке хранить данные windows 1251 или utf 8?


    На какие типы можно индекс ставить?
     
    #992 vorona, 19 Jan 2010
    Last edited: 20 Jan 2010
  13. Byrger

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

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    Есть куча таблиц table_1 table_2 и во всех них есть поле nick_id
    как удалить строку из всех таблиц сразу зная nick_id

    ПС 1 или несколько таблиц могут не содержать строку с таким ид
     
    #993 Byrger, 25 Jan 2010
    Last edited: 25 Jan 2010
  14. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    DELETE `table_1` , `table_2` FROM `table_1` , `table_2` , `table_3` WHERE `table_1`.`id` = `table_2`.`id` && `table_2`.`id` = `table_3`.`id`


    ----


    DELETE FROM `table_1` , `table_2` USING `table_1` , `table_2` , `table_3` WHERE `table_1`.`id` = `table_2`.`id` && `table_2`.`id` = `table_3`.`id`


    ........ WHERE id=15
     
    #994 LStr1ke, 25 Jan 2010
    Last edited: 25 Jan 2010
  15. Byrger

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

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    не получается, видимо из-за того что есть пустые таблицы
     
  16. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    FOREIGN KEY, не?
     
  17. Freakazoitt

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

    Joined:
    2 Jun 2008
    Messages:
    35
    Likes Received:
    1
    Reputations:
    0
    Есть таблица (допустим 'table'), там есть записи, есть ячейки и т.д.
    Иногда в ячейке 'asd' появляются записи, одинаковые для разных строк
    Еще есть ячейка 'side'

    Как извлечь это число (если оно оlинаково для двух и более записей и при этом у них разное 'side')?
     
  18. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    Нужно вывести пользователей по рейтингу
    Code:
    SELECT * FROM users INNER JOIN ratings ON ratings.rateable=users.id ORDER BY SUM(ratings.rating)/COUNT(ratings.rating)
    :( не работает

    ???
     
  19. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    up

    Здесь вообще помогают с вопросами?
     
  20. REBUUS

    REBUUS Active Member

    Joined:
    6 Apr 2009
    Messages:
    314
    Likes Received:
    111
    Reputations:
    9
    ratings.rateable , это как я понял поле rateable в таблице ratings, это тоже надо после from писать, в общем не знаю :)


    подробнее опиши что за таблицы и какие там данные, а то по моему там не order by , а group by надо делать
     
    #1000 REBUUS, 28 Jan 2010
    Last edited: 28 Jan 2010
Thread Status:
Not open for further replies.