【发布时间】:2017-12-22 01:28:47
【问题描述】:
在学习 PHP 和 MYSQL 的基础知识的同时,我正在从事一个小型个人项目。该项目下载一个 XML 提要并在 MYSQL 中插入数据,并且每分钟刷新和更新数据(工作正常)我遇到的问题是更新需要从 NULL 更新一次的列“actualstart”到 DATETIME满足以下条件时的每一行。我尝试了各种 if 组合和 WHERE 参数,但没有任何乐趣
if ($Time1 > $start && $Time1 < $halftimestart) {
$sqlstart = "REPLACE livescores (Id,actualstart) VALUES ('$Id','$actualstart') ";
mysqli_query($con,$sqlstart);
完整代码如下
<?php
//mysql
$con = mysqli_connect("","","","");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//xml
echo "updated";
$livegoal = simplexml_load_file('livescores.xml');
foreach ($livegoal as $livegoalinfo):
$Id=$livegoalinfo->Id;
$League=$livegoalinfo->League;
$Round=$livegoalinfo->Round;
$Date=$livegoalinfo->Date;
$HomeTeam=$livegoalinfo->HomeTeam;
$HomeGoals=$livegoalinfo->HomeGoals;
$HomeTeam_Id=$livegoalinfo->HomeTeam_Id;
$AwayGoals=$livegoalinfo->AwayGoals;
$AwayTeam=$livegoalinfo->AwayTeam;
$AwayTeam_Id=$livegoalinfo->AwayTeam_Id;
$Time=$livegoalinfo->Time;
$Time1 = str_replace(array("'"), '', $Time);
$Location=$livegoalinfo->Location;
$Stadium=$livegoalinfo->Stadium;
$HasBeenRescheduled=$livegoalinfo->HasBeenRescheduled;
$HomeGoalDetails=$livegoalinfo->HomeGoalDetails;
$HomeGoalDetails1 = str_replace(array("'"), '', $HomeGoalDetails);
$AwayGoalDetails=$livegoalinfo->AwayGoalDetails;
$AwayGoalDetails1 = str_replace(array("'"), '', $AwayGoalDetails);
$HomeLineupGoalkeeper=$livegoalinfo->HomeLineupGoalkeeper;
$HomeLineupGoalkeeper1 = str_replace(array("'"), '', $HomeLineupGoalkeeper);
$AwayLineupGoalkeeper=$livegoalinfo->AwayLineupGoalkeeper;
$AwayLineupGoalkeeper1 = str_replace(array("'"), '', $AwayLineupGoalkeeper);
$HomeLineupDefense=$livegoalinfo->HomeLineupDefense;
$HomeLineupDefense1 = str_replace(array("'"), '', $HomeLineupDefense);
$AwayLineupDefense=$livegoalinfo->AwayLineupDefense;
$AwayLineupDefense1 = str_replace(array("'"), '', $AwayLineupDefense);
$HomeLineupMidfield=$livegoalinfo->HomeLineupMidfield;
$HomeLineupMidfield1 = str_replace(array("'"), '', $HomeLineupMidfield);
$AwayLineupMidfield=$livegoalinfo->AwayLineupMidfield;
$AwayLineupMidfield1 = str_replace(array("'"), '', $AwayLineupMidfield);
$HomeLineupForward=$livegoalinfo->HomeLineupForward;
$HomeLineupForward1 = str_replace(array("'"), '', $HomeLineupForward);
$AwayLineupForward=$livegoalinfo->AwayLineupForward;
$AwayLineupForward1 = str_replace(array("'"), '', $AwayLineupForward);
$HomeLineupSubstitutes=$livegoalinfo->HomeLineupSubstitutes;
$HomeLineupSubstitutes1 = str_replace(array("'"), '', $HomeLineupSubstitutes);
$AwayLineupSubstitutes=$livegoalinfo->AwayLineupSubstitutes;
$AwayLineupSubstitutes1 = str_replace(array("'"), '', $AwayLineupSubstitutes);
$HomeLineupCoach=$livegoalinfo->HomeLineupCoach;
$HomeLineupCoach1 = str_replace(array("'"), '', $HomeLineupCoach);
$AwayLineupCoach=$livegoalinfo->AwayLineupCoach;
$AwayLineupCoach1 = str_replace(array("'"), '', $AwayLineupCoach);
$HomeSubDetails=$livegoalinfo->HomeSubDetails;
$HomeSubDetails1 = str_replace(array("'"), '', $HomeSubDetails);
$AwaySubDetails=$livegoalinfo->AwaySubDetails;
$AwaySubDetails1 = str_replace(array("'"), '', $AwaySubDetails);
$HomeTeamFormation=$livegoalinfo->HomeTeamFormation;
$AwayTeamFormation=$livegoalinfo->AwayTeamFormation;
$HomeTeamYellowCardDetails=$livegoalinfo->HomeTeamYellowCardDetails;
$HomeTeamYellowCardDetails1 = str_replace(array("'"), '', $HomeTeamYellowCardDetails);
$AwayTeamYellowCardDetails=$livegoalinfo->AwayTeamYellowCardDetails;
$AwayTeamYellowCardDetails1 = str_replace(array("'"), '', $AwayTeamYellowCardDetails);
$HomeTeamRedCardDetails=$livegoalinfo->HomeTeamRedCardDetails;
$HomeTeamRedCardDetails1 = str_replace(array("'"), '', $HomeTeamRedCardDetails);
$AwayTeamRedCardDetails=$livegoalinfo->AwayTeamRedCardDetails;
$AwayTeamRedCardDetails1 = str_replace(array("'"), '', $AwayTeamRedCardDetails);
$actualstart=date("Y-m-d H:i:s");
$actualhalftime=date("Y-m-d H:i:s");
$actualsecondhalftime=date("Y-m-d H:i:s");
$start = 0;
$halftime = "Halftime";
$halftimestart = 45;
// Create connection
$sql = "INSERT INTO livescores (Id, League, Round, Date, HomeTeam, HomeGoals, HomeTeam_Id, AwayGoals, AwayTeam, AwayTeam_Id, Time, Location, Stadium, HasBeenRescheduled, HomeGoalDetails, AwayGoalDetails, HomeLineupGoalkeeper, AwayLineupGoalkeeper, HomeLineupDefense, AwayLineupDefense, HomeLineupMidfield, AwayLineupMidfield, HomeLineupForward, AwayLineupForward, HomeLineupSubstitutes, AwayLineupSubstitutes, HomeLineupCoach, AwayLineupCoach, HomeSubDetails, AwaySubDetails, HomeTeamFormation, AwayTeamFormation, HomeTeamYellowCardDetails, AwayTeamYellowCardDetails, HomeTeamRedCardDetails, AwayTeamRedCardDetails ) VALUES ('$Id', '$League', '$Round', '$Date', '$HomeTeam', '$HomeGoals', '$HomeTeam_Id', '$AwayGoals', '$AwayTeam', '$AwayTeam_Id', '$Time1', '$Location', '$Stadium', '$HasBeenRescheduled', '$HomeGoalDetails1', '$AwayGoalDetails1', '$HomeLineupGoalkeeper1', '$AwayLineupGoalkeeper1', '$HomeLineupDefense1', '$AwayLineupDefense1', '$HomeLineupMidfield1', '$AwayLineupMidfield1', '$HomeLineupForward1', '$AwayLineupForward1', '$HomeLineupSubstitutes1', '$AwayLineupSubstitutes1', '$HomeLineupCoach1', '$AwayLineupCoach1', '$HomeSubDetails1', '$AwaySubDetails1', '$HomeTeamFormation', '$AwayTeamFormation', '$HomeTeamYellowCardDetails1', '$AwayTeamYellowCardDetails1', '$HomeTeamRedCardDetails1', '$AwayTeamRedCardDetails1')
ON DUPLICATE KEY UPDATE League='$League',Round='$Round',Date='$Date',HomeTeam='$HomeTeam',HomeGoals='$HomeGoals',HomeTeam_Id='$HomeTeam_Id',AwayGoals='$AwayGoals',AwayTeam='$AwayTeam',AwayTeam_Id='$AwayTeam_Id',Time='$Time1',Location='$Location',Stadium='$Stadium',HasBeenRescheduled='$HasBeenRescheduled',HomeGoalDetails='$HomeGoalDetails1',AwayGoalDetails='$AwayGoalDetails1',HomeLineupGoalkeeper='$HomeLineupGoalkeeper1',AwayLineupGoalkeeper='$AwayLineupGoalkeeper1',HomeLineupDefense='$HomeLineupDefense1',AwayLineupDefense='$AwayLineupDefense1',HomeLineupMidfield='$HomeLineupMidfield1',AwayLineupMidfield='$AwayLineupMidfield1',HomeLineupForward='$HomeLineupForward1',AwayLineupForward='$AwayLineupForward1',HomeLineupSubstitutes='$HomeLineupSubstitutes1',AwayLineupSubstitutes='$AwayLineupSubstitutes1',HomeLineupCoach='$HomeLineupCoach1',AwayLineupCoach='$AwayLineupCoach1',HomeSubDetails='$HomeSubDetails1',AwaySubDetails='$AwaySubDetails1',HomeTeamFormation='$HomeTeamFormation',AwayTeamFormation='$AwayTeamFormation',HomeTeamYellowCardDetails='$HomeTeamYellowCardDetails1',AwayTeamYellowCardDetails='$AwayTeamYellowCardDetails1',HomeTeamRedCardDetails='$HomeTeamRedCardDetails1',AwayTeamRedCardDetails='$AwayTeamRedCardDetails1' ";
if ($Time1 > $start && $Time1 < $halftimestart) {
$sqlstart = "REPLACE livescores (Id,actualstart) VALUES ('$Id','$actualstart') ";
mysqli_query($con,$sqlstart);
}
mysqli_query($con,$sql);
endforeach;
mysqli_close($con);
?>
显然上面的代码很粗糙,随着时间的推移会改进
非常感谢
【问题讨论】:
-
神圣变量!现在找出错字。
-
你遇到了什么错误,你想达到什么结果?
-
MySql 有一个名为coalesce 的命令将返回列表中的第一个非空参数。
-
好吧,上面的 if 语句工作正常,并在 actualstart 列中添加了一个 TIMEDATE 标记,但是当脚本再次运行时,日期发生了变化......所以我试图添加一个 NULL 条件来只更新“acutalstart”如果它为空。希望这是有道理的,对于这里将近凌晨 2 点的任何拼写错误感到抱歉
-
感谢 Austin Brunkhorst...编辑完成... MySQL :)