Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从多个表中获取最早的年份_Php_Mysql - Fatal编程技术网

Php 从多个表中获取最早的年份

Php 从多个表中获取最早的年份,php,mysql,Php,Mysql,我有两个表,其中添加了相同的字段。我想做的是从所有这些记录中得到最早的年份 表: comics | movies | tv | tv_episodes 到目前为止的代码(不起作用): 返回的错误: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in E:\xampp\htdocs\mydb\functions\common.php on line 94 最有效的方法是什么 更新 根

我有两个表,其中添加了相同的字段
。我想做的是从所有这些记录中得到最早的年份

表:

comics | movies | tv | tv_episodes
到目前为止的代码(不起作用):

返回的错误:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in E:\xampp\htdocs\mydb\functions\common.php on line 94
最有效的方法是什么

更新

根据Andrew的回答,新的查询如下:

function getStartYear() {
    include("config.php");
        $query = "SELECT MIN(y) FROM (
SELECT MIN(YEAR(added)) AS y FROM comics 
UNION SELECT MIN(YEAR(added)) AS y FROM movies 
UNION SELECT MIN(YEAR(added)) AS y FROM tv 
UNION SELECT MIN(YEAR(added)) AS y FROM tv_episodes
) AS t1";
        $result = mysql_query($query);
        if (mysql_num_rows($result) > 0) {
            $finalanswer = mysql_fetch_array($result);
            return $finalanswer['t1']; // <-- Line 96
        }else{
            echo mysql_error();
        }
}

可以使用联合子查询通过SQL检索它:

SELECT MIN(y) FROM (
    SELECT MIN(YEAR(added)) AS y FROM table1
    UNION SELECT MIN(YEAR(added)) AS y FROM table2
    ...
) AS t1;

可以使用联合子查询通过SQL检索它:

SELECT MIN(y) FROM (
    SELECT MIN(YEAR(added)) AS y FROM table1
    UNION SELECT MIN(YEAR(added)) AS y FROM table2
    ...
) AS t1;

首先,您应该检查以确保SQL语句实际返回所需的数据。在某种SQL查看器(或phpMySQL)中运行脚本本身,或者

只是为了确保没有无效的SQL语句

您得到的无效资源错误向我表明mysql_查询函数的“$result”不是有效资源

因此:

如果您的查询中确实存在错误,请诊断并修复,然后继续

现在,您正在从循环的中间执行“返回”,这意味着您将返回在结果集中找到的第一个对象

我会考虑,而不是“循环”,这样做:

if (mysql_num_rows($result) > 0)
{
    $finalanswer = mysql_fetch_array($result);
    return $finalanswer['added'];
}
else
    echo mysql_error();

错误捕获是一种很好的习惯。:)

首先,您应该检查以确保SQL语句实际返回所需的数据。在某种SQL查看器(或phpMySQL)中运行脚本本身,或者

只是为了确保没有无效的SQL语句

您得到的无效资源错误向我表明mysql_查询函数的“$result”不是有效资源

因此:

如果您的查询中确实存在错误,请诊断并修复,然后继续

现在,您正在从循环的中间执行“返回”,这意味着您将返回在结果集中找到的第一个对象

我会考虑,而不是“循环”,这样做:

if (mysql_num_rows($result) > 0)
{
    $finalanswer = mysql_fetch_array($result);
    return $finalanswer['added'];
}
else
    echo mysql_error();


错误捕获是一种很好的习惯。:)

此错误表示SQL查询失败。您应该在那里开始调试。在
FROM
子句中列出的表不应该包含在
()
中。然后,在所有列出的表之间没有连接条件,这将导致所有表中的所有行乘以所有表中的所有行的巨大笛卡尔乘积。使用
mysql\u error()
查找查询语法错误。我按照Andrew的建议将查询的布局调高。现在它说没有
t1的索引
t1是表名,你想得到y。所以改变:返回$finalanswer['t1'];至$finalanswer['y'];此外,在查询中,将SELECT MIN(y)更改为SELECT MIN(y)为y,以便设置别名,或者只返回第一列。此错误表示SQL查询失败。您应该在那里开始调试。在
FROM
子句中列出的表不应该包含在
()
中。然后,在所有列出的表之间没有连接条件,这将导致所有表中的所有行乘以所有表中的所有行的巨大笛卡尔乘积。使用
mysql\u error()
查找查询语法错误。我按照Andrew的建议将查询的布局调高。现在它说没有
t1的索引
t1是表名,你想得到y。所以改变:返回$finalanswer['t1'];至$finalanswer['y'];同样在查询中,将SELECT MIN(y)更改为SELECT MIN(y)为y,以便设置别名,或者只返回第一列。这仍然返回相同的消息。如果是这种情况,则说明您做得不对。mysql_error()看起来与您得到的PHP错误完全不同。你找错地方了$结果不是有效的“资源”,这意味着您的mysql_查询没有返回适当的数据库结果,这意味着您的SQL查询在某些方面存在缺陷。将我的查询更改为Andrew的建议,解决了该问题,但我得到了一个新的查询。t1上未定义的索引。。。请检查我上面的注释:d ty.@mup420另外,请确保在尝试查询数据库时出错,而不仅仅是在尝试从结果集中获取行时出错。在两个地方都做。我像你在例子中写的那样写了出来。这仍然返回相同的消息。如果是这样的话,你就做错了。mysql_error()看起来与您得到的PHP错误完全不同。你找错地方了$结果不是有效的“资源”,这意味着您的mysql_查询没有返回适当的数据库结果,这意味着您的SQL查询在某些方面存在缺陷。将我的查询更改为Andrew的建议,解决了该问题,但我得到了一个新的查询。t1上未定义的索引。。。请检查我上面的注释:d ty.@mup420另外,请确保在尝试查询数据库时出错,而不仅仅是在尝试从结果集中获取行时出错。在这两个地方都做。我像你在例子中那样写了出来。注意:第96行E:\xampp\htdocs\mydb\functions\common.php中的未定义索引:t1注意:第96行E:\xampp\htdocs\mydb\functions\common.php中的未定义索引:t1
if (!$result = mysql_query($query))
    echo mysql_error();
if (mysql_num_rows($result) > 0)
{
    $finalanswer = mysql_fetch_array($result);
    return $finalanswer['added'];
}
else
    echo mysql_error();