Отображение пользовательского SQL-запроса с использованием PHP - PullRequest
0 голосов
/ 24 февраля 2012

Пожалуйста, кто-нибудь может мне помочь с этим?

У меня есть 2 таблицы, местоположение и билеты, и то, что я до сих пор построил, - это форма в div, в которой пользователи вводят название города или населенного пункта, в котором они хотели бы видеть живую музыку. Эта форма отправляется и передается оператор SQL с запросом таблицы местоположений. В другом разделе поисковый запрос пользователя отображается в окне на экране. Далее я хотел бы написать оператор SQL, который будет искать запрос пользователя и динамически отображать соответствующую информацию о билетах из таблицы заявок на основе идентификатора местоположения.

Например, пользователь вводит «Ньюкасл» в качестве поискового запроса, таблица местоположений находит город Ньюкасл и отображает результат пользователя в элементе «Билеты». Я хотел бы отобразить все поля, которые соответствуют с «Ньюкасл» из билета таблицы.

LocationID является первичным ключом в таблице местоположений и имеет 3 других столбца, город, город и почтовый индекс. Таблица тикетов состоит из того, что ticketID является первичным ключом, а locationID - внешним ключом, а другие поля - место, tPrice, дата и время. Я думаю, что у меня проблема в том, что я не пропускаю переменную из запроса пользователей, чтобы таблица заявок могла найти ее и отобразить соответствующую информацию.

Вот код для формы:

<div id="search">

    <form name="searchForm" id="searchForm" class="searchForm"  method="post">

   <input type="text" name="citySearch" id="citySearch" class="citySearch"   placeholder="Enter name city/town..." autofocus="autofocus" />

        <input type="submit" name="ticketSearch" id="ticketSearch" class="ticketSearch" value="Search" />


    </form>

</div>

Вот код для отображения запроса пользователя:

  <div id="locationResult">

<?php

  include( 'classes/database_connection.php' );

      $cSearch = $_POST['citySearch'];

              $sql = "SELECT DISTINCT city FROM location WHERE city = '$cSearch'";

              mysql_query($sql) or die (mysql_error());
          $queryresult = mysql_query($sql) or die(mysql_error());

         while ($row = mysql_fetch_assoc($queryresult)) {
         $city = $row['city'];

         echo $row["city"];

        }
                                       mysql_free_result($queryresult);
        mysql_free_result($qResult);

        mysql_close($conn);
    ?>

    </div>
 </div>

Здесь я хочу отобразить результаты заявки из таблицы заявок:

    <div id="ticketsResults">

    <table class="ticketResult" border="0" cellspacing="5">
    <tr>
       <td><b>Venue</b></td>
               <td><b>Price</b></td>
               <td><b>Date</b></td>
               <td><b>Time</b></td>
               <td><b>Street View</b></td>
    </tr>

        <?php
            include( 'classes/database_connection.php' );

        $locID = $_POST['locationID'];
        $citySearch = $_POST['citySearch'];

                    $sQL = "SELECT locationID FROM location";

                  //Here is where I want it to display dynamic information rather than manually type the location
        $ticketSQL = "SELECT * FROM ticket NATURAL JOIN location WHERE city = 'Newcastle' ";

        mysql_query($sQL) or die (mysql_error());
            $qResult = mysql_query($sQL) or die(mysql_error());

        mysql_query($ticketSQL) or die (mysql_error());
            $result = mysql_query($ticketSQL) or die(mysql_error());


        while ($row = mysql_fetch_assoc($result)) {

    //  $ticketID = $row['ticketID'];

        $venue = $row['venue'];
        $ticketPrice = $row['tPrice'];
        $date = $row['date'];
        $time= $row['time'];

        echo "<tr>\n";
        echo "<td>$venue</td>\n";
        echo "<td>&pound$ticketPrice</td>\n";
        echo "<td>$date</td>\n";
        echo "<td>$time</td>\n";
            echo "<td>Click to see</td>\n";
        echo "</tr>\n";

        }

           mysql_free_result($qResult);
           mysql_free_result($result);
           mysql_close($conn);


    ?>
       </table>
    </div>

В общем, я хочу SQL-оператор, который динамически отображает заявки в соответствии с запросом пользователя. Извините за обильное количество кода! Любая помощь с благодарностью.

1 Ответ

1 голос
/ 24 февраля 2012

Прежде чем делать что-то еще, я думаю, вам следует поработать над своим стилем кодирования, в частности, над отступом.Быстрый поиск в Google должен помочь.Затем изучите подготовленные операторы MySQL, потому что в настоящее время ваш код небезопасен.Как сказал Джорданм, он подвержен SQL-инъекции.

Например, если кто-то ввел бла 'ИЛИ' x '=' x в качестве названия города.Ваш запрос станет

SELECT DISTINCT city FROM location WHERE city = 'blah' OR 'x'='x';

По сути, он позволяет пользователю делать непослушные вещи с вашим запросом, а вы этого не хотите.

Ниже приведен пример того, как этого можно избежать.используя подготовленные MySQL заявления:

// basic quick raw example
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
$stmt = $mysqli->prepare('SELECT DISTINCT city FROM location WHERE city = ?');
$stmt->bind_param('s',$city_name);
$stmt->execute();
$stmt->bind_result($city);
while ($stmt->fetch())
{
    echo $city;
}

Это все, что я собираюсь оставить вам, потому что я хочу ответить на реальный вопрос (?) Мне нужно будет написать код для вас.Гудлак

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...