Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 Insert into select在初始运行时仅插入一行,但之后每次都可以_Php_Mysql_Curl_Cron - Fatal编程技术网

Php Insert into select在初始运行时仅插入一行,但之后每次都可以

Php Insert into select在初始运行时仅插入一行,但之后每次都可以,php,mysql,curl,cron,Php,Mysql,Curl,Cron,基本上,我使用php和mysql来扩展邮件客户端的功能,数据通过curl发送到我的服务器,然后输入到我数据库中的表a中,当数据与今天的日期匹配时,我从表a中选择所有数据,如果日期匹配,则插入表B中: $date = $_POST['dateAdded']; $today = date("Y-m-d"); if ($date === $today) { $link->setAttribute(PDO::ATTR_ERRMODE, P

基本上,我使用php和mysql来扩展邮件客户端的功能,数据通过curl发送到我的服务器,然后输入到我数据库中的表a中,当数据与今天的日期匹配时,我从表a中选择所有数据,如果日期匹配,则插入表B中:

$date = $_POST['dateAdded'];
        $today = date("Y-m-d");

        if ($date === $today) {

            $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql="INSERT INTO `$tableB` (`$fields`) SELECT * FROM $tableA WHERE date_Added='$today'";
            $link->exec($sql);
在这个IF语句中还运行了其他代码,但我觉得它与这个问题无关。我知道这段代码还存在其他问题,比如不能转义post值等,但这是我将在不久的将来解决的问题。问题是,每当此代码作为cron作业的一部分运行时,它只会在$tableB中插入一行,但当我从tableA中清除tableB和一个与$today匹配的值,并重新运行代码时,它每次都会工作(即,如果我手动运行它),它唯一不工作的时间就是通过cron作业。如果需要更多的代码,我很乐意提供,欢迎任何帮助

cron作业使用curl运行,因为数据位于不同的服务器上

这可能与curl最初通过cron发送数据的方式有关吗? 还是SQL语句本身有问题


谢谢。

请小心,de date_是否添加了日期字段或时间戳?在MySQL中,这是不一样的,因为你的日期(“Y-m-d”)与时间戳的对比会被弄乱,很可能这就是你的问题所在

尝试改变

$today = date("Y-m-d")


根据您提供的信息,这是我唯一想到的

这句话的问题确实在于我今天使用
$today
的方式,而不是上面描述的方式。通过更改MySQL语句,将数据插入数据库,问题得以解决:

这个:

$sql=“插入到
$tableB
$fields
)从$tableA中选择*其中添加日期=“$today”

需要更改为:

$sql=“插入到
$tableB
$fields
)从$table中选择*,其中日期添加在“$date\u 24小时”和“$today”之间

其中,
$date\u 24\u hours
是:
$date\u 24\u hours=date('Y-m-d',strottime('today.-1天')


这里需要对这两个日期进行比较,否则cron作业会被自己弄糊涂,并在第一次插入完成后感觉自己已经完成了。我想我会分享这些知识,因为我的问题已经解决。

这是一个日期字段,手动运行时效果很好,所以我怀疑这会改变功能。如果出现一些信息,您是否尝试查看日志?我看不出你这里的小代码有任何问题,也许你试图在错误的地方看到错误,伙计:)我唯一可以访问的日志是服务器错误日志,里面没有任何东西哀求与这件事有关,不过谢谢。
$today = date("Y-m-d H:i:s");