我有一个数据库,其中包含一个表格,其中包括一列日期(该列标题为“日期”),格式为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');
答案 0 :(得分:2)
有两件事突然袭来我:
您确定这是与该结果一致的查询吗? insert
和delete
等查询没有结果。它们返回一个表示成功的布尔值。
您是否正在检查以确保查询成功?在您拨打mysql_query
的行之后,请务必检查结果。如果它是错误的,您可以致电mysql_get_error
找出问题所在。
编辑:好的,你真正的问题是你混合了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