Заменить данные в MySQL на PHP, если NULL

0

Я работаю над небольшим персональным проектом, изучая основы PHP и MYSQL. Проект загружает XML-канал и вставляет данные в MYSQL, и каждую минуту данные обновляются и обновляются (работает нормально). У меня возникает проблема обновления столбца "actualstart", который нужно обновлять только один раз от NULL до DATETIME для каждой строки, когда выполняются нижеприведенные критерии. Я пробовал различные комбинации, а также параметры 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);
?>

Очевидный выше код является грубым и со временем будет улучшаться

Большое спасибо

Теги:

1 ответ

0
Лучший ответ

Использовать IFNULL:

$sqlstart = "UPDATE livescores 
            SET actualstart = IFNULL(actualstart, '$actualstart') 
            WHERE id = '$Id'";
  • 0
    Спасибо за предложение .. Я ранее пробовал вариант IF NULL, но не с критериями WHERE .. скоро протестирует и обновит
  • 0
    Если вы не используете WHERE , он обновляет все строки, а не только строку с нужным вам идентификатором.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню