PHP或MYSQL无法识别价值

时间:2013-01-10 22:43:08

标签: php mysql

我正在使用php从mysql查询,其中home_team或away_team列包含给定值。我知道DB中存在这些值的记录。但是,由于某种原因,PHP或MySQL告诉我它不是。我的代码如下。

$teams = array("St. Louis",
       "NY Yankees",
       "NY Mets",
       "LA Dodgers",
       "LA Angels");

foreach($teams as $given_team)
{
    $query = mysql_query("SELECT COUNT(*) FROM current_season_games WHERE home_team = '".$given_team."' OR away_team = '".$given_team."'")or die(mysql_error());
    $count = mysql_result($query, 0);

    echo "".$count."<br />";
}

我知道正在回显的$ count变量是不正确的。我正在查看数据库中符合查询中指定条件的一些行。

有什么想法吗?

谢谢,

兰斯

3 个答案:

答案 0 :(得分:1)

您正在使用COUNT(*)。这不会给你这个领域的价值。 COUNT(*)通常用于衡量返回的结果数量。

您要做的实际上是选择列名称,或者选择符合条件的整行。像这样的东西 -

SELECT * FROM current_season_games 
WHERE home_team = '".$given_team."' OR away_team = '".$given_team."'")

答案 1 :(得分:0)

在我遇到的旧代码中仍然使用已弃用的mysql_*函数,我通常会遇到使用mysql_num_rows() function

  

从结果集中检索行数。此命令仅对返回实际结果集的SELECT或SHOW等语句有效。要检索受INSERT,UPDATE,REPLACE或DELETE查询影响的行数,请使用mysql_affected_rows()

我建议您将代码更改为此类代码 -

$result = mysql_query("SELECT COUNT(*) FROM current_season_games WHERE home_team = '".$given_team."' OR away_team = '".$given_team."'")or die(mysql_error());
$count = mysql_num_rows($result);

请注意,mysql_query()函数不会返回$query,因为您的变量名称表示。它返回一个结果集,然后您可以检查该结果集以检索实际数据。

答案 2 :(得分:0)

以下是一些要检查的事项:

  • 是PHP连接到同一主机和数据库? (对于一些开发人员来说,这是一个'DOH!'时刻,当他们有多个数据库时......一个本地,一个在测试服务器上。)你确定要查询同一个表吗?

  • 尝试测试更简单的查询,例如SELECT COUNT(*) FROM current_season_games查看是否可以返回任何非零计数

  • 尝试将查询放入字符串中,并在执行之前回显字符串

  • 这是一个InnoDB表,并且您尝试计算的行是否已提交? (添加行的会话是否执行START TRANSACTION,插入行,然后还没有提交它们?(对于使用多个环境的某些开发人员(例如SQLyog和Web服务器),这是一个DOH!时刻。)具有事务隔离级别REPEATABLE READ的会话将看不到未提交的行)

  • 是数据库中使用区分大小写的排序规则的列,其中谓词(WHERE子句)中的相等比较是作为区分大小写而不区分大小写处理的?

这些都不能解决你的问题,但是如果没有更多的信息,就不可能告诉(从这里),问题是什么。但是你可以检查一些事情。