2014-01-16 3 views
-2

У меня есть этот кусок SQL, который должен восстановить комнату, основанную на его RoomID:PHP разместить переменные в SQL

$sql="SELECT room FROM Rooms WHERE roomID = $_POST[roomID]"; 

(RoomID является переменной)

Почему это не работает?

EDIT: код работает, если я ставлю номер вместо $ _POST [RoomID] (или $ _POST [ 'RoomID'])

EDIT2: Это мой код:

while ($row = $result->fetch_assoc()) { 
       $date = $row['date']; 
      $period = $row['period']; 
      $roomID = $row['roomID']; 
      $teacherinitials = $row['teacherinitials']; 

      $sql2="SELECT room FROM Rooms WHERE roomID = $_POST[roomID]"; 

      $res=mysqli_query($con,$sql2); 

      while ($row2 = $res->fetch_assoc()) { 
        $room = $row2['room']; 
        $description = $row2['description']; 
      } 

I получите идентификатор roomID от пользователя, затем я попытаюсь использовать его для поиска комнаты, которой соответствует идентификатор roomID в другой таблице.

+3

вам нужно '$ _POST ['roomID']', будьте осторожны с SQL-инъекциями. –

+1

Вам нужно предоставить гораздо больше информации. Какую ошибку вы получаете? – Scopey

+0

Tin Tran, это, похоже, не работает. Ничего не появляется вообще, даже моя панель навигации, отдельно от этого. – user2397282

ответ

1
$sql="SELECT room FROM Rooms WHERE roomID = $_POST[roomID]"; // not working 

Возможные причины:

  1. $_POST['roomID'] не установлен
  2. roomID не указаны в выписке - $_POST['roomID']
  3. переменной не котирующиеся в запросе:

    $ RoomID = $ _POST [ 'RoomID'];

    $ sql = "SELECT room FROM Rooms WHERE roomID = '$ roomID'";

  4. Неспособность выполнить запрос - этого много.

  5. Unknow поля, используемые в запросе
  6. Любые из многих других причин

У некоторой отладки. Посмотрите в журнал ошибок сервера.

... и не забывайте избегать ввода своего пользователя перед отправкой в ​​базу данных.

+0

Спасибо! Номер 3 решил! Я должен был написать '$ roomID', а не $ _POST ['roomID'] – user2397282

+0

Это ** требует ** использовать ['bind_param'] (http://www.php.net/manual/en/mysqli-stmt .bind-param.php) для добавления значений. Использование строковой интерполяции совершенно неверно. Добавление кавычек для решения проблемы превращает нефункциональный код в функциональную ошибку SQL-инъекции. – tadman

+0

@tadman Фактически, привязка не требуется, поскольку это не использует подготовленные операторы. Существует напоминание о том, чтобы избежать пользовательских данных, но в этом случае, если вы читаете комментарии OP и смотрите его опубликованный код, вы увидите, что данные пользователя здесь не задействованы. Это попытка помочь кому-то решить проблему. Ваш произвольный, неточный и неактуальный комментарий не помогает. –

Смежные вопросы