PHP或MYSQL无法识别值

PHP或MYSQL无法识别值,php,mysql,Php,Mysql,我使用php从mysql查询,其中home\u team或away\u team列包含给定值。我知道数据库中存在此类值的记录。但是,出于某种原因,PHP或MySQL告诉我它不是。我的代码如下 $teams = array("St. Louis", "NY Yankees", "NY Mets", "LA Dodgers", "LA Angels"); foreach($teams as $given_team) { $query

我使用php从mysql查询,其中home\u team或away\u team列包含给定值。我知道数据库中存在此类值的记录。但是,出于某种原因,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 />";
}
$teams=array(“圣路易斯”,
“纽约北方佬”,
“纽约大都会”,
“洛杉矶道奇队”,
“洛杉矶天使”);
foreach($团队作为$U团队)
{
$query=mysql\U query(“从当前的\U赛季\U比赛中选择COUNT(*),其中主队=”、“$gived\u team.”或客场\u team=”、“$gived\u team.”)或死亡(mysql\u error());
$count=mysql\u结果($query,0);
回显“$count”。
; }
我知道被回送的$count变量是不正确的。我正在查看数据库中符合查询中指定条件的一些行

有什么想法吗

谢谢

Lance

您正在使用
计数(*)
。这不会给出字段的值<代码>计数(*)通常用于测量返回的结果数量

您要做的是实际选择列名,或者选择与条件匹配的整行。像这样的-

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

在我遇到的仍然使用不推荐的
mysql.*
函数的旧代码中,我通常会遇到使用

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

我建议您将代码更改为以下内容-

$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\u query()
函数不会像变量名所示返回
$query
。它返回一个结果集,然后您可以检查该结果集以检索实际数据。

以下是一些需要检查的内容:

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

  • 尝试测试一个更简单的查询,例如从当前季赛中选择计数(*),看看是否可以返回任何非零计数

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

  • 这是一个InnoDB表,您试图统计的行是否已提交?(添加行的会话是否执行启动事务、插入行,然后尚未提交它们?(对于使用多个环境(例如SQLyog和web服务器)的某些开发人员来说,这是一个非常糟糕的时刻。)(事务隔离级别为可重复读取的单独会话不会看到未提交的行)

  • 数据库中的该列是否使用区分大小写的排序规则,其中谓词(where子句)中的相等比较是区分大小写还是不区分大小写的


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

您仍然需要循环,您可以在()中使用有关类似查询的信息,请参阅。当我尝试对数组中的home_team或away_team列是其中一个值的行执行更新查询时,它也不起作用。不过,$count应该等于表中home_team或away_team等于$given_team的行数。它正在返回0.当然不是0。这是错误的。作为记录,在总体方案中,我甚至不需要知道返回了多少行。最终,我需要执行更新查询。但是,这也不起作用,因为数组中的值没有显示为表中的现有值。这很奇怪。我盯着前面的行,php是tel告诉我不存在这样的行。谢谢。原来是mysql排序问题。