'mysql_fetch_array()提供的参数问题不是有效的MySQL结果资源'

时间:2010-11-24 19:42:14

标签: php sql mysql

我有一个数据库,其中包含一个表格,其中包括一列日期(该列标题为“日期”),格式为Y-m-d。

我想提取当前月份中记录的所有数据行,因此我使用以下查询:

$year_month = date("Y-m");
$query = "SELECT date FROM tracker WHERE date LIKE '$year_month%'";

当我执行查询并尝试以可视方式输出它时,我收到错误“警告:mysql_fetch_array():提供的参数不是第64行的有效MySQL结果资源”。

第64行是以下循环的开头:

while($row = mysql_fetch_array($result, MYSQL_ASSOC)
{
    echo "Name :{$row['date']} <br>";
}

我已经搜索谷歌并在这里看了一眼,但我似乎无法弄清楚这个看似简单的问题。据我所知,实际的查询执行得很好。

有什么想法吗?

**附加 - 调用下面的MySQL查询**

$result = mysqli_query($conn, $query);

$ conn指的是以下行:

$conn = @mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die ('Error connecting to MySQL');

4 个答案:

答案 0 :(得分:2)

有两件事突然袭来我:

  1. 您确定这是与该结果一致的查询吗? insertdelete等查询没有结果。它们返回一个表示成功的布尔值。

  2. 您是否正在检查以确保查询成功?在您拨打mysql_query的行之后,请务必检查结果。如果它是错误的,您可以致电mysql_get_error找出问题所在。

  3. 编辑:好的,你真正的问题是你混合了mysql_*mysqli_*命令。你需要使用其中一个。

答案 1 :(得分:2)

这样的事应该可以很好地运作......

if(!$result)
  throw new Exception("MySQL Error: ".mysql_error()." (#".mysql_errorno().")");

if(mysql_num_rows($result) <= 0)
  echo "No results found.";
else
  while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    echo "Name :{$row['date']} <br>";

如果您不理解从mysql_error()mysql_errorno()收到的错误,请发布输出,我们应该可以提供帮助。

答案 2 :(得分:0)

日期字段的数据类型是什么,如果是日期类型,那么您应该尝试以下操作:

$query = "SELECT date FROM tracker WHERE year(date)='".date("Y")." and month(date) = '".date("m")."'";
$year_month = date("Y-m");

$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)
{
    echo "Name :{$row['date']} <br>";
}

答案 3 :(得分:0)

$query = "SELECT date FROM tracker WHERE date LIKE '$year_month%'"; 

应该是

$query = "SELECT `date` FROM tracker WHERE `date` LIKE '$year_month%'"; 

date是sql中的保留字。

寻找更多示例here