2014-01-26 4 views
1

Как вы можете видеть из кода ниже, очень нового для PHP, поэтому, пожалуйста, извините вопрос новичков, но ive боролся с этим весь день и просто не мог понять, в чем проблема.Содержимое переменной PHP не отображается

В основном Ive получил 3 выпадающих меню для team1, team2 и место проведения. Когда пользователь выбирает команды и место проведения, запускается функция isset, и я извлекаю результат из игры из своей базы данных.

Как вы можете видеть в приведенном ниже коде, я использую 3 оператора эха, чтобы проверить, были ли зафиксированы правильные значения из выпадающих меню. Когда я открываю страницу, операторы эха подтверждают, что в раскрывающихся списках фиксируются правильные результаты, я продолжаю и запрашиваю базу данных с указанными выше значениями.

Проблема

В то время цикла, я хочу повторить результаты запроса НО не получает отображается ничего. Я попытался сделать var_dump, чтобы увидеть содержимое переменных, но НИЧЕГО не отображается. Что я делаю не так?

foreach($_REQUEST["team1"] as $teamone){ 
     $team1 = $teamone; 
     } 
     foreach($_REQUEST["team2"] as $teamtwo){ 
     $team2 = $teamtwo; 
     } 
     foreach($_REQUEST['venue'] as $venue){ 
      $venue = $venue; 
     } 
     //These echo statments are a test to see if the correct dropdown values has been captured 
     echo $team1.'<br>'; 
     echo $team2.'<br>'; 
     echo $venue; 
     //Use results from dropdown menu to query database 
    $result = mysql_query('SELECT * 
         FROM `results` 
         WHERE `hometeam` = "$team1" && `awayteam` = "$team2"') or 
          die(mysql_error());               

     while($row = mysql_fetch_array($result)){ 
     echo $row['awayteamscore']; 
     echo $row['hometeamscore']; 
     } 

Если кто-то может указать мне в правильном направлении, было бы весьма полезно.

+0

Запрос mysql возвращает любые результаты или любые ошибки? Я предполагаю, что вы правильно подключаетесь к базе данных в какой-то другой части кода. Правильно? –

+0

Вы var_dump ($ _ REQUEST)? – AboQutiesh

+0

@AggelosSynadakis У меня нет ошибок, и я могу подтвердить, что я успешно подключаюсь к DB – Marilee

ответ

1

Я подозреваю, что вы получаете SQL синтаксической ошибки по двум причинам, по крайней мере Во-первых, если вы хотите использовать значение переменной в строке, которую вы должны использовать двойной кавычки, охватывающей

$sql="select * from mytable where col1='$my_var'"; 

И второе: SQL ожидает, что строковые значения обрезаются с помощью котировок simgle, как я указал выше. В вашем случае вы используете «quotes».

И еще одна рекомендация.При отладке PHP приложения может быть полезно для того, чтобы расширенного вывода, вставив

error_reporing(E_ALL); 

где-то в начале PHP скрипта

+0

Спасибо, что исправил это, не помню, что в будущем – Marilee

+0

тесто не будет частью моего первоначального вопроса, можете ли вы дать мне несколько советов по очистке моего кода с точки зрения 3 forloops im using , Очевидно, что это не самый эффективный способ получить значения из 3 dropboxes, любая идея, что я могу сделать, чтобы использовать 1 forloop вместо 3? – Marilee

0

Вы помещаете свой SQL-запрос в одинарные кавычки, и переменные там не работают. Попробуйте это:

<?php 
$var = "stuff"; 
echo '$var'; 
echo "$var"; 
?> 

Что вы можете сделать вместо этого, чтобы concatenate строк, как это:

$result = mysql_query('SELECT * 
         FROM `results` 
         WHERE `hometeam` = "'.$team1.'" && `awayteam` = "'.$team2.'"') 
-1

Ваши foreach петли перекрывая значения. Было бы лучше, чтобы поместить его в массив, как так

$team1 = array(); 
foreach($_REQUEST["team1"] as $teamone){ 
    $team1[] = $teamone; 
} 

, если вам нужно сделать значения $team1 в строку, то это будет более подходящим

$team1 = ""; 
foreach($_REQUEST["team1"] as $teamone){ 
    $team1 .= $teamone; 
} 

Закрепление выше первой может помочь , Если нет, возможно, проблема в ваших запросах db.

//Using double quotes 

"SELECT * FROM `results` WHERE `hometeam` = '$team1' && `awayteam` = '$team2'" 

//Using single quotes 

'SELECT * FROM `results` WHERE `hometeam` = "'.$team1.'" && `awayteam` = "'.$team2.'"' 

Затем покажите результат

while($row = mysql_fetch_array($result)){ 
    echo $row['awayteamscore']; 
    echo $row['hometeamscore']; 
} 
+1

вы ошибаетесь мой человек while ($ row = mysql_fetch_array ($ result)) не вызовет бесконечный цикл, даже сами php его используют – AboQutiesh

+1

@AboQutiesh yup Я видел это. отредактировал его. извините, что привык к mysqli подготовленным заявкам –

0

My Friend Ваш код просто отлично вам просто нужно проверить, что ваше завершение заполнения в Dropboxes с в форме сначала проверьте свой html, а когда вы var_dump($_REQUEST), он должен быть массивом, содержащим все значения, которые вы пытаетесь собрать.

1

Вы смешиваете между двойными и одинарными кавычками. в то время как переменные не должны округляться двойными кавычками.

$result = mysql_query(" SELECT * 
        FROM `results` 
        WHERE `hometeam` = '$team1' && `awayteam` = '$team2' ") or 
         die(mysql_error());               

    while($row = mysql_fetch_array($result)){ 
    echo $row['awayteamscore']; 
    echo $row['hometeamscore']; 
    } 
+0

Спасибо, что исправил это – Marilee

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