如何在PHP中调试“未定义的变量”问题?

时间:2011-08-12 19:44:18

标签: php

以下是我如何回应数据库中的数据:

<?php

//check id to display
if ($playerID = 1) {
  echo "<p class=\"playerInfoL\"> $player_bio </p> <p class=\"playerAchievesL\"> $achievements</p>";
}
else{
  return false;
}

?>

以下是我定义变量的方法......

<?php

session_start();

require_once('config.php');

//create query statement
$query = 'SELECT * FROM player_info';

//make the query from db
$myData = mysql_query($query, $conn)
OR exit('Unable to select data from table');

if(isset($_GET['action'])) {
  $playerID                 = $_GET['id'];
  $player_bio           = $_GET['player_bio'];
  $achievements             = $_GET['player_achts'];
}
?>

我不是我做错了。

5 个答案:

答案 0 :(得分:8)

你想比较,而不是分配:

if ($playerID == 1)

答案 1 :(得分:4)

变化

                         if ($playerID = 1)

                         if ($playerID == 1)

首先实际上只是“改变”$ playerID的值,而不是你要找的是什么

答案 2 :(得分:4)

我认为你将$_GET数据(可以通过URL发送)与mysql_query调用返回的数据混淆(仍然需要检索)。在mysql_query行之后,请尝试以下操作:

$row = mysql_fetch_array($myData, MYSQL_ASSOC)

if(isset($_GET['action']) && $row) {
    $playerID               = $row['id'];
    $player_bio             = $row['player_bio'];
    $achievements           = $row['player_achts'];
}

答案 3 :(得分:3)

只有设置了$playerID(以及$player_bio时),才会定义$_GET['action']$_GET['id'] 您可以使用if (isset($playerID) && $playerID == 1)

答案 4 :(得分:2)

正如其他人已经回答的那样,您应该更改测试以正确比较“if”中的变量:

if($playerId == 1)

但我也猜测你不希望从你的$ _GET变量中获取播放器信息,因此希望从你正在查询的数据库中检索它们。以下是应该如何做的:

if(isset($myData))
{
    $record = mysql_fetch_array($myData, MSQL_ASSOC);

    $playerID               = $record['id'];
    $player_bio             = $record['player_bio'];
    $achievements           = $record['player_achts'];
}