За последние 24 часа нас посетили 53723 программиста и 1772 робота. Сейчас ищут 765 программистов ...

Как правильно составлять запрос к БД

Тема в разделе "PHP для новичков", создана пользователем ekip, 28 июн 2010.

  1. ekip

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

    С нами с:
    11 авг 2009
    Сообщения:
    118
    Симпатии:
    0
    Посоветуйте как будет правильнее составить запрос к БД, итак есть форма:
    HTML:
    1. <form action="script.php" method="GET">
    2. <input type="text" name="check">
    3. <input type="text" name="type">
    4. <input type="text" name="name">
    5. <input value="Go" name="go" type="submit">
    6. </form>
    По нажатию кнопки мы отправляемся к скрипту:

    PHP:
    1.  
    2. <?php
    3. $_GET['check'] = $check;
    4. $_GET['type'] = $type;
    5. $_GET['name'] = $name;
    6. $select_sql = "SELECT *  FROM `list` WHERE check = '".$check."' AND type = '".$type."' AND name = '".$name."' ORDER BY id";
    7. ?>
    8.  
    Но если мы не заполнили какое то поле в форме, такой запрос ничего не выводит, можно конечно обойтись написанием запросов под каждый из вариантов, таким образом, но получается слишком громоздко, тем более если полей в форме будет много

    PHP:
    1.  
    2. <?php
    3. if(!$_GET['check'] OR $_GET['check'] =='') // Если не указан чек
    4. $select_sql = "SELECT *  FROM `list` WHERE type = '".$type."' AND name = '".$name."' ORDER BY id";
    5. else
    6. $select_sql = "SELECT *  FROM `list` WHERE check = '".$check."' AND type = '".$type."' AND name = '".$name."' ORDER BY id"
    7. ?>
    8.  
    Как можно сделать проще?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    пройтись по всем параметрам в цикле и наклеить запрос из них. а что тут сложного и громоздкого?
     
  3. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    PHP:
    1. <?php
    2.  $_GET['check'] = $check;
    3.  $_GET['type'] = $type;
    4.  $_GET['name'] = $name;
    а не наоборот?
    прежде чем вставлять переменные в запрос их надо обработать mysql_real_escape_string()