这个问题在这里已经有了答案:
9年前关闭。
Possible Duplicate:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
在 MySQL 中,我尝试使用格式为“2010 年 1 月 1 日”的名为“edate”的文本字段从一千多行中仅选择不同的年份:
SELECT DISTINCT DATE_FORMAT(STR_TO_DATE(edate, '%e-%b-%Y'), %Y)
FROM addnews
WHERE status = 1
AND archives = 1
AND delete1 = 0
MySQL 回归
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\WAMP\www\baycrossings\web\archives.php on line 28"
在 MS SQL 中,它的工作原理如下:
select distinct(year(edate))
from addnews
where status = 1
and archives = 1
and delete1 = 0
MySQL不允许子字符串选择吗?我试图避免选择比每次查询所需的数据多数百倍的数据。
最佳答案
您是否忘记引用 %Y
DATE_FORMAT()
的第二个参数?
尝试将您的查询调用更改为如下所示:
$result = mysql_query($your_query) or trigger_error(mysql_error());
这样您就可以看到 MySQL 返回的实际错误,而不仅仅是关于 mysql_query() 返回 FALSE 的错误(这就是您粘贴的错误所说的)。
除此之外,您不应该将日期作为字符串存储在数据库中。应该使用 native 日期字段类型,因为它们允许执行日期“数学”,而无需进行一些非常昂贵的字符串到日期转换。
由于您只是想从字符串日期中提取年份,假设日期格式是恒定的,请尝试使用:
SELECT ..., RIGHT(edate, 4)
这将比字符串到日期到字符串的往返操作快得多。
关于php - 在 MySQL 中只选择一个子字符串然后返回它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7218819/