Выборка из MySQL

Тема в разделе "PHP", создана пользователем Stripe, 25 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Запись в таблице TABLE, в столбце STOLBETC выглядит для разных полей по разному. Вот реальный пример:
    Точка с запятой двойная введена в эти последовательности как дальнейшй разделитель. Цифр может быть не ограниченное колличество.
    Эти цифры являются ID-шниками записей в другой таблице. Как при переходе по ссылке
    вывести все данные из поля таблицы TABLE где id=64, вернее 64 совпадает с одной из цифр в столбце STOLBETC указаных выше последовательностях?

    Добавлено через 29 минут
    Пытаюсь решить таким образом проблему:
    PHP:
    $STOLBETC $stationresquery['STOLBETC'];

             
    $stylearray explode(";;"$STOLBETC);
                
    $count count($stylearray);
                echo 
    $idstyle.' - номер ID стиля в БД <br>';
                
            for(
    $i=0;$i<=$count;$i++) {
                if(
    $stylearray[$i]=$idstyle) {
                    
    $stationarray mysql_query("SELECT * FROM `station` WHERE `idstyle`='".$STOLBETC."'");
                    print 
    "<pre>"
                    
    print_r($stationarray);
                    print 
    "</pre>\n";
                    
                } 
            }
    Не получается
     
  2. Eihwaz

    Eihwaz

    Регистр.:
    7 окт 2007
    Сообщения:
    156
    Симпатии:
    54
    Запрос SELECT возвращает ссылку на базу данных, а не массив. Используйте после запроса mysql_fetch_row.
    И, кстати, из скрипта не видно: откуда берется переменная $idstyle?
     
    Stripe нравится это.
  3. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    735
    Симпатии:
    423

    Выбираем из таблицы `mytable` все значения, где в столбце `mynum` встречается значение только = 64:
    Код:
    [B]SELECT * FROM mytable WHERE mynum = "64" OR mynum LIKE "%64;%" OR mynum LIKE "%;64;%" LIMIT 0 , 30;[/B]
    Если правильно понял что вы написали, то код можно сократить так:
    PHP:
    $STOLBETC $stationresquery['STOLBETC'];
    $result mysql_query('SELECT * FROM `mytable` WHERE idstyle = "'.$STOLBETC.'" OR idstyle LIKE "%'.$STOLBETC.';%" OR idstyle LIKE "%;'.$STOLBETC.';%" LIMIT 0 , 30;');
    while (
    $row mysql_fetch_array($result))
    {
     
    printf ("<pre>ID: %s  Name: %s </pre>"$row[0], $row[1]); // пишем тут смотря сколько у вас row[] 

    mysql_free_result($result);

    не доглядел... поправил!
     
    Stripe нравится это.
  4. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Откуда взялась переменная $result ?

    Добавлено через 18 минут
    PHP:
    $result mysql_query('SELECT * FROM `station` WHERE `idstyle` = "'.$idstyle.'" OR `idstyle` LIKE "%'.$idstyle.';%" OR `idstyle` LIKE "%;'.$idstyle.';%" LIMIT 0 , 30;');
    $idstyle = ('64')

    Это строки:
    Добавлено через 41 минуту
    Вопрос решен, спасибо!
     
  5. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    735
    Симпатии:
    423
    Для правильного выполнения запроса $idstyle должно быть только целым чмслом!

    Правильно:
    $idstyle = 64;

    Неправильно:
    $idstyle = '64';
    $idstyle = ('64');
     
  6. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    ммм... а почему это не правильные числа?

    Еще один вопрос по сабжу:
    Если у меня $row[0], $row[1] могут расти до бесконечности, как указать выводить их все не прописывая их все в коде $row[0], $row[1], $row[2], $row[3], ... $row[n]?
     
  7. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    735
    Симпатии:
    423
    1) при
    PHP:
    $result mysql_query('SELECT * FROM `station` WHERE `idstyle` = "'.$idstyle.'" ...
    уже идет экранирование (т.е. $idstyle типа Integer преобразуем в String)
    PHP:
    "'.$idstyle.'"
    и вы вставляя свой код $idstyle = '64'; получаете:
    PHP:
    $result mysql_query('SELECT * FROM `station` WHERE `idstyle` = "''64''" ...';
    двойное экранирование, отсюда и выводится ошибка или так же при
    PHP:
    $result mysql_query('SELECT * FROM `station` WHERE `idstyle` = "'('64')'" ...';
    А при использовании целого числа $idstyle = 64; запрос выполняется правильно!

    2) Для этого используйте mysql_num_rows($result) и загоняйте количество в цикл (можно и до бесконечности использовать, главное чтобы сервак выдержал!:(
    PHP:
    // колличество столбцов
    $cols mysql_num_rows($result);
    $cols в цикл загоняем...
     
    Stripe нравится это.
  8. oleg_61

    oleg_61 Создатель

    Регистр.:
    2 дек 2009
    Сообщения:
    19
    Симпатии:
    2
    Вопрос собсно про ошибки в логах:
    mysql_free_result(:( supplied resource is not a valid MySQL result resource File: published/SC/html/scripts/classes/class.database.php Line: 314 Error #: 2
    это
    PHP:
    return is_resource($this->link)?mysql_free_result($this->link):false
    предшествует этому, я так понимаю:
    PHP:
    function affectedRows(){
            
            switch (
    $this->type){
                case 
    'mysql':
                    return 
    mysql_affected_rows($this->link);
                break;
    и что тут не так, неврублюсь я чего то?
     
  9. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    А сам запрос как формируется? Ошибка явно в нем...
     
  10. oleg_61

    oleg_61 Создатель

    Регистр.:
    2 дек 2009
    Сообщения:
    19
    Симпатии:
    2
    Ха, если б знать, это же функция по обнулению результатов выборки
    не буду же я весь файл тут приводить, мож кто сталкивался, оно то как бы не влияет на работу магазина но логи надо чистить от ошибок
     
Статус темы:
Закрыта.