PHP变量内容未显示

时间:2014-01-26 10:33:35

标签: php mysql

正如您从下面的代码中看到的,我对PHP非常新,所以请原谅新手问题但是我整个下午一直在努力解决这个问题并不知道究竟是什么问题。

基本上我为team1,team2和场地提供了3个下拉菜单。 当用户选择团队和场地时,会触发isset功能,并从游戏数据库中提取结果。

正如您在下面的代码中看到的,我使用3个echo语句来测试是否已捕获来自下拉菜单的正确值。当我打开页面时,echo语句确认从下拉列表中捕获了正确的结果,我继续使用上面回显的变量查询数据库。

问题

在while循环中,我希望回显查询结果但不显示任何内容。我尝试使用var_dump来查看变量的内容,但是会显示NOTHING。我做错了什么?

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'];
        }

如果有人能指出我正确的方向,我们将不胜感激。

5 个答案:

答案 0 :(得分:1)

我怀疑你至少有两个原因收到sql语法错误 首先,当您想在字符串中使用变量值时,必须使用双重引号

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

第二:正如我在上面指出的那样,SQL期望字符串值用simgle引号表示。在您的情况下,您使用“”引号。

还有一项建议。在调试php app时,通过插入

启用扩展输出可能很有用
error_reporing(E_ALL);

php脚本开头的某个地方

答案 1 :(得分: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'];
    }

答案 2 :(得分:0)

您将SQL查询放在单引号中,变量在那里不起作用。试试这个:

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

你可以做的是concatenate这样的字符串:

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

答案 3 :(得分:0)

我的朋友你的代码很好你只需要检查你提交带有表单的dropbox,所以先检查你的html,当你var_dump($_REQUEST)它应该是一个包含你试图收集的所有值的数组

答案 4 :(得分:-1)

您的foreach循环会覆盖这些值。最好把它放在一个像这样的数组

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

如果您需要将$team1的值设为字符串,那么这将更合适

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

修复上述内容可能有所帮助。如果没有,则问题可能在您的数据库查询中。

//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'];
}