За последние 24 часа нас посетили 19875 программистов и 1711 роботов. Сейчас ищут 2010 программистов ...

Как задать переменную в запросе к MySQL?

Тема в разделе "PHP и базы данных", создана пользователем Goofman, 18 май 2010.

  1. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    Имеется много (под)форумов с объединяющими категориями. Нужно вывести в виде некоего массива только определенные (под)форумы, допустим с 3 по 8.

    Если переменные не использовать, то все работает, но как только подставляю $start, $length, пишет ошибка синтаксиса. Как корректно задать переменные при отправке запроса на MySQL?

    PHP:
    1.  
    2. $start = 3; $length = 5;
    3.  
    4.  
    5. $query = array(
    6.     'SELECT'    => 'c.id AS cid, c.cat_name, f.id AS fid, f.forum_name,
    7. f.forum_desc, f.redirect_url, f.moderators, f.num_topics, f.num_posts,
    8. f.last_post, f.last_post_id, f.last_poster',
    9.     'FROM'      => 'categories AS c',
    10.     'LIMIT' => '"$start", "$length"',
    11.     'JOINS'     => array(
    12.         array(
    13.             'INNER JOIN'    => 'forums AS f',
    14.             'ON'            => 'c.id=f.cat_id'
    15.         ),
    16.         array(
    17.             'LEFT JOIN'     => 'forum_perms AS fp',
    18.             'ON'            => '(fp.forum_id=f.id AND fp.group_id='.$forum_user['g_id'].')'
    19.         )
    20.     ),
    21.     'WHERE'     => 'fp.read_forum IS NULL OR fp.read_forum=1',
    22.     'ORDER BY'  => 'c.disp_position, c.id, f.disp_position'
    23. );
     
  2. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  3. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    Короче нужно было в двойные кавычки заключать, понял...

    'LIMIT' => "$start, $length",
     
  4. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    А как теперь задать значения $start, $length в другом файле? Типа глобальной переменной какой-то...

    (Мне нужно, чтобы эти значения передавались на данную страницу через ссылку, расположенную на другой странице)
     
  5. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    смотреть в сторону параметров в урл
    и получать их из $_GET
     
  6. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    А если там будет

    $_GET["start"];
    $_GET["length"];

    то все равно должно быть

    'LIMIT' => "$start, $length", ??

    Start -- это переменная или как. Откуда программа знает, что это переменная?
     
  7. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
  8. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    ты ее должен сам присвоить

    $start = $_GET['start'];
    естественно что перед этим надо проверить, а есть ли такой параметр в $_GET


    возвращаемся к
    плюс читаем о переменных и массивах в двойных кавычках.
     
  9. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    Дддааа, я уже сам догадался... Просто сбивает, что знак доллара в $_GET, кажется, что это тоже переменная...
     
  10. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    это и есть переменная

    Только одна из предопределенных суперглобальных http://php.net/superglobal
     
  11. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
  12. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    что значит ведет себя как оператор?

    поиск в гугл или по форуму
    тема - ЧПУ (человеко-понятный-урл)
     
  13. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    Не понимаю, как писать в .htaccess.dist

    RewriteEngine On
    RewriteRule ^special/index.php/? index.php?start=4&length=5

    И ничего нет.
     
  14. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    здравый смысл подсказывает, что .htaccess.dist следует переименовать в .htaccess
     
  15. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    Заработало. Откуда он вообще мог взяться этот dist?
     
  16. Goofman

    Goofman Активный пользователь

    С нами с:
    18 май 2010
    Сообщения:
    24
    Симпатии:
    0
    А эта строчка будет индексироваться гуглом?