我正在学习一个小型的个人项目,同时学习PHP和MYSQL的基础知识。该项目下载XML提要并在MYSQL中插入数据,每分钟刷新和更新数据(正常工作)我遇到的问题是更新列'actualstart',需要仅从NULL更新到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);
?>
显而易见,上面的代码很粗糙,随着时间的推移会有所改进
非常感谢
使用IFNULL
:
$sqlstart = "UPDATE livescores
SET actualstart = IFNULL(actualstart, '$actualstart')
WHERE id = '$Id'";