2011-07-17 65 views
1

为什么我的查询不返回任何结果?我可以运行查询SELECT * FROM用户WHERE wid = 'worker_040',它会返回一个结果就好。我错过了什么吗?PHP MySQL选择问题

$wid = $_POST['username']; 
      $con = mysql_connect("11.88.3.2","XXXX","XXXXX"); 
      if (!$con) 
       { 
        die('Could not connect: ' . mysql_error()); 
       } 

      mysql_select_db("chit", $con); 

      echo "Form details<br />"; 

      $result = mysql_query("SELECT * FROM `users` WHERE wid = '$wid'"); 
      while($row = mysql_fetch_array($result)){ 
      echo $row['FirstName']. " - ". $row['LastName']; 
      echo "<br />"; 
      } 

     mysql_close($con); 
+0

它应该是'$ _POST ['username']'。另外,当你调用查询时,你确定'$ wid'有一个值吗?在调用mysql_fetch_array()之前,完成的SQL实际上看起来像什么? – cspray

+0

@CharlesSprayberry对不起,我在我的代码中,只是没有复制出于某种原因。在代码上面只是为了测试我做了'echo $ wid',它输出了类似worker_040的东西 – JosephD

+0

我知道这是挑剔的,但我会把你的查询从'$ result'变量中取出来,放到它自己的'$查询变量,然后回显出整个完整的SQL语句,以确保整个事情与有效的事情匹配。只要ID存在于你的数据库中,我不明白为什么这不应该返回结果。 – cspray

回答

1

您可能需要一些时间进行调试。例如,确保您的脚本通过HTTP POST请求进行访问,并在请求中发送“用户名”($ _POST ['request']被设置并且具有可以/将返回结果的有效值)。

执行您的查询后获取一些信息(您可以使用mysql_error()),获取返回的行数等。在发送它执行之前输出您的sql查询。

在while循环中打印每行的值。

这些是一些提示/技巧,你可以用它来找出可能发生的事情。还有其他方法,但您可以尝试以上方法。

0

你在呼唤你的结果行作为一个数字数组,但引用它们作为关联数组 - 改变你的while循环使用mysql_fetch_assoc

编辑 - 这可能是吧!

mysql_fetch_array默认返回数组作为关联数组和数组,所以不应该影响上面的代码。

+0

多数民众赞成在我最初也认为,但后来我读了'mysql_fetch_array'和阅读同样的事情。这就是为什么我感到困惑。 – JosephD