PHP致命错误:在第317行的...中的非对象上调用成员函数execute()

时间:2014-08-08 13:21:42

标签: php sql

ar.php的浏览器输出

UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1 WHERE first_name='Chris' AND sur_name='Dunn';
UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1 WHERE first_name='Richard' AND sur_name='Tait';
UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1 WHERE first_name='Josh' AND sur_name='Coulson';
UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1 WHERE first_name='Tom' AND sur_name='Bonner';
UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1, friendly_assists=friendly_assists+1 WHERE first_name='Greg' AND sur_name='Taylor';
UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1, friendly_assists=friendly_assists+1 WHERE first_name='Ryan' AND sur_name='Donaldson';
UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1 WHERE first_name='Tom' AND sur_name='Champion';
UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1, friendly_yellows=friendly_yellows+1 WHERE first_name='Issaga' AND sur_name='Diallo';
UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1 WHERE first_name='Harrison' AND sur_name='Dunk';
UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1 WHERE first_name='Adam' AND sur_name='Cunnington';
UPDATE playerstats_14_15 SET friendly_apps=friendly_apps+1, friendly_goals=friendly_goals+2 WHERE first_name='Kwesi' AND sur_name='Appiah';

conn.php

<?php
    //localhost settingd
    $server = "localhost";
    $username = "root";
    $password = "";
    $database = "stats";

    //deployment settings
    // $server = "localhost";
    // $username = "cufcstat_admin";
    // $password = "";
    // $database = "cufcstat_stats";

    $mysqli = new mysqli($server, $username, $password, $database);
    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }

?>

ar.php

error_reporting(E_ALL); 
ini_set('display_errors', 1);
session_start();
require 'conn.php';
$season1 = explode("/", $_SESSION['season']);
$table = "results_" . $season1[0] . "_" . $season1[1];
$table2 = "fixtures_" . $season1[0] . "_" . $season1[1];

$fixture = explode("/", $_SESSION['oppo']);

$resultDate = $fixture[0];
$resultOppo = $fixture[1];
$resultType = "";
$resultComp = "";
$resultPlace = "";
$resultGoalsfor = $_SESSION['goalsfor'];
$resultGoalsagainst = $_SESSION['goalsagainst'];
$resultAtt = $_SESSION['att'];
$resultUnitedPlayer = array();
$resultOppoPlayer = array();
$resultUnitedSub = array();
$resultOppoSub = array();
$sqlStatements = array();

$sql="SELECT type, competition, place FROM " . $table2 . " WHERE date='" . $resultDate . "' AND opposition='" . $resultOppo . "'";
$stmt = $mysqli->prepare($sql);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($type, $competition, $place); 
while ($stmt->fetch()) {
    $resultType = $type;
    $resultComp = $competition;
    $resultPlace = $place;
}
$stmt->close();

//CUFC Players (number.firstname.surname.goals.yellow?.red?) (01.kai.day.34/54.y.n)
for($i = 1; $i < 12; $i++) {
    $player = explode("/", $_SESSION['cufc_player_'.$i]);
    $str = $player[0] . "." . $player[1] . "." . $player[2];
    $playerSQL = "";
    $playerSQL = "UPDATE playerstats_".$season1[0]."_".$season1[1]." SET ".$resultType."_apps=".$resultType."_apps+1";

    //Check for goals
    $goals = "0";
    $numGoals = 0;
    $multi = "0";
    for($j = 1; $j < $resultGoalsfor + 1; $j++) {
        if($player[0] . "/" . $player[1] . "/" . $player[2] == $_SESSION['cufc_goalscorer_'.$j]) {
            $goals = "1";
            $numGoals++;
            if($multi == "0") {
                $str = $str . "." . $_GET['cufc_goalscorer_'.$j.'_min'];
                $multi = "1";
            } else {
                $str = $str . "/" .$_GET['cufc_goalscorer_'.$j.'_min'];
            }
        }
    }

    if($goals == "0") {
        $str = $str . ".";
    } else {
        $playerSQL = $playerSQL . ", " .$resultType."_goals=".$resultType."_goals+".$numGoals;
    }

    if($_SESSION['cufc_player_'.$i.'_assist'] != "0") {
        $playerSQL = $playerSQL . ", " .$resultType."_assists=".$resultType."_assists+".$_SESSION['cufc_player_'.$i.'_assist'];
    }

    //Check for yellow
    if(isset($_SESSION['cufc_player_'.$i.'_yellow'])) {
        if($_SESSION['cufc_player_'.$i.'_yellow'] == "1") {
            $str = $str . ".y";
            $playerSQL = $playerSQL . ", " .$resultType."_yellows=".$resultType."_yellows+1";
        } else {
            $str = $str . ".n";
        }
    } else {
        $str = $str . ".n";
    }

    //Check for red
    if(isset($_SESSION['cufc_player_'.$i.'_red'])) {
        if($_SESSION['cufc_player_'.$i.'_red'] == "1") {
            $str = $str . ".y";
            $playerSQL = $playerSQL . ", " .$resultType."_reds=".$resultType."_reds+1 WHERE first_name='".$player[1]."' AND sur_name='".$player[2]."'";
        } else {
            $str = $str . ".n";
            $playerSQL = $playerSQL . " WHERE first_name='".$player[1]."' AND sur_name='".$player[2]."';";
        }
    } else {
        $str = $str . ".n";
    }

    $resultUnitedPlayer[$i] = $str;
    array_push($sqlStatements, $playerSQL);
}

//Oppo Players (number.firstname.surname.goals.yellow?.red?) (01.kai.day.34/54.y.n)
for($i = 1; $i < 12; $i++) {
    $str = $_SESSION['oppo_player_'.$i.'_number'] . "." . $_SESSION['oppo_player_'.$i.'_firstname'] . "." . $_SESSION['oppo_player_'.$i.'_surname'];

    //Check for goals
    $goals = "0";
    $multi = "0";
    for($j = 1; $j < $resultGoalsagainst + 1; $j++) {
        if($_SESSION['oppo_player_'.$i.'_firstname'] . "." . $_SESSION['oppo_player_'.$i.'_surname'] == $_SESSION['oppo_goalscorer_'.$j.'_firstname'] . "." . $_SESSION['oppo_goalscorer_'.$j.'_surname']) {
            $goals = "1";
            if($multi == "0") {
                $str = $str . "." . $_GET['oppo_goalscorer_'.$j.'_min'];
                $multi = "1";
            } else {
                $str = $str . "/" .$_GET['oppo_goalscorer_'.$j.'_min'];
            }
        }
    }

    if($goals == "0") {
        $str = $str . ".";
    }

    //Check for yellow
    if(isset($_SESSION['oppo_player_'.$i.'_yellow'])) {
        if($_SESSION['oppo_player_'.$i.'_yellow'] == "1") {
            $str = $str . ".y";
        } else {
            $str = $str . ".n";
        }
    } else {
        $str = $str . ".n";
    }

    //Check for red
    if(isset($_SESSION['oppo_player_'.$i.'_red'])) {
        if($_SESSION['oppo_player_'.$i.'_red'] == "1") {
            $str = $str . ".y";
        } else {
            $str = $str . ".n";
        }
    } else {
        $str = $str . ".n";
    }

    $resultOppoPlayer[$i] = $str;
}

//CUFC Subs (number.firstname.surname.goals.yellow?.red?.sub?) (01.kai.day.34/54.y.n.80/Cunnington)
for($i = 1; $i < 12; $i++) {
    if(isset($_SESSION['cufc_sub_'.$i]) && $_SESSION['cufc_sub_'.$i] != "-") {
        $player = explode("/", $_SESSION['cufc_sub_'.$i]);
        $str = $player[0] . "." . $player[1] . "." . $player[2];
        $playerSQL = "";

        if($_SESSION['cufc_sub_'.$i.'_replaced'] == "1") {
            $playerSQL = "UPDATE playerstats_".$season1[0]."_".$season1[1]." SET ".$resultType."_subapps=".$resultType."_subapps+1";
        }

        //Check for goals
        $goals = "0";
        $numGoals = 0;
        $multi = "0";
        for($j = 1; $j < $resultGoalsfor + 1; $j++) {
            if($player[0] . "/" . $player[1] . "/" . $player[2] == $_SESSION['cufc_goalscorer_'.$j]) {
                $goals = "1";
                $numGoals++;
                if($multi == "0") {
                    $str = $str . "." . $_GET['cufc_goalscorer_'.$j.'_min'];
                    $multi = "1";
                } else {
                    $str = $str . "/" .$_GET['cufc_goalscorer_'.$j.'_min'];
                }
            }
        }

        if($goals == "0") {
            $str = $str . ".";
        } else {
            $playerSQL = $playerSQL . ", " .$resultType."_goals=".$resultType."_goals+".$numGoals;
        }

        if($_SESSION['cufc_sub_'.$i.'_assist'] != "0") {
            $playerSQL = $playerSQL . ", " .$resultType."_assists=".$resultType."_assists+".$_SESSION['cufc_sub_'.$i.'_assist'];
        }

        //Check for yellow
        if(isset($_SESSION['cufc_sub_'.$i.'_yellow'])) {
            if($_SESSION['cufc_sub_'.$i.'_yellow'] == "1") {
                $str = $str . ".y";
                $playerSQL = $playerSQL . ", " .$resultType."_yellows=".$resultType."_yellows+1";
            } else {
                $str = $str . ".n";
            }
        } else {
            $str = $str . ".n";
        }

        //Check for red
        if(isset($_SESSION['cufc_sub_'.$i.'_red'])) {
            if($_SESSION['cufc_sub_'.$i.'_red'] == "1") {
                $str = $str . ".y";
                $playerSQL = $playerSQL . ", " .$resultType."_reds=".$resultType."_reds+1";
            } else {
                $str = $str . ".n";
            }
        } else {
            $str = $str . ".n";
        }

        if($_SESSION['cufc_sub_'.$i.'_replaced'] == "1") {
            $playerSQL = $playerSQL . " WHERE first_name='".$player[1]."' AND sur_name='".$player[2]."';";
        }

        //Did come on?
        if($_SESSION['cufc_sub_'.$i.'_replaced'] == "1") {
            $replacement =  explode("/", $_SESSION['cufc_sub_'.$i.'_replacement']);
            $str = $str . "." . $_SESSION['cufc_sub_'.$i.'_replacedTime'] . "/" . $replacement[2];
        } else {
            $str = $str . ".n";
        }

        array_push($sqlStatements, $playerSQL);
    } else {
        $str = "";
        $playerSQL = "";
    }

    $resultUnitedSub[$i] = $str;
}

//Oppo Subs (number.firstname.surname.goals.yellow?.red?.sub?) (01.kai.day.34/54.y.n.80/Cunnington)
for($i = 1; $i < 12; $i++) {
    if($_SESSION['oppo_sub_'.$i.'_number'] != null) {
        $str = $_SESSION['oppo_sub_'.$i.'_number'] . "." . $_SESSION['oppo_sub_'.$i.'_firstname'] . "." . $_SESSION['oppo_sub_'.$i.'_surname'];

        //Check for goals
        $goals = "0";
        $multi = "0";
        for($j = 1; $j < $resultGoalsagainst + 1; $j++) {
            if($_SESSION['oppo_sub_'.$i.'_firstname'] . "." . $_SESSION['oppo_sub_'.$i.'_surname'] == $_SESSION['oppo_goalscorer_'.$j.'_firstname'] . "." . $_SESSION['oppo_goalscorer_'.$j.'_surname']) {
                $goals = "1";
                if($multi == "0") {
                    $str = $str . "." . $_GET['oppo_goalscorer_'.$j.'_min'];
                    $multi = "1";
                } else {
                    $str = $str . "/" .$_GET['oppo_goalscorer_'.$j.'_min'];
                } 
            }
        }
        if($goals == "0") {
            $str = $str . ".";
        }

        //Check for yellow
        if(isset($_SESSION['oppo_sub_'.$i.'_yellow'])) {
            if($_SESSION['oppo_sub_'.$i.'_yellow'] == "1") {
                $str = $str . ".y";
            } else {
                $str = $str . ".n";
            }
        } else {
            $str = $str . ".n";
        }

        //Check for red
        if(isset($_SESSION['oppo_sub_'.$i.'_red'])) {
            if($_SESSION['oppo_sub_'.$i.'_red'] == "1") {
                $str = $str . ".y";
            } else {
                $str = $str . ".n";
            }
        } else {
            $str = $str . ".n";
        }

        //Did come on?
        if($_SESSION['oppo_sub_'.$i.'_replaced'] == "1") {
            $str = $str . "." . $_SESSION['oppo_sub_'.$i.'_replacedTime'] . "/" . $_SESSION['oppo_sub_'.$i.'_replacement'];
        } else {
            $str = $str . ".n";
        }
    } else {
        $str = "";
    }
    $resultOppoSub[$i] = $str;
}

$all_query_ok=true;
$sql = "INSERT INTO " . $table . " VALUES ('".$resultDate."', '".$resultOppo."', '".$resultType."', '".$resultComp."', '".$resultPlace."', '".$resultGoalsfor."', '".$resultGoalsagainst."', '".$resultAtt."', '".$resultUnitedPlayer[1]."', '".$resultUnitedPlayer[2]."', '".$resultUnitedPlayer[3]."', '".$resultUnitedPlayer[4]."', '".$resultUnitedPlayer[5]."', '".$resultUnitedPlayer[6]."', '".$resultUnitedPlayer[7]."', '".$resultUnitedPlayer[8]."', '".$resultUnitedPlayer[9]."', '".$resultUnitedPlayer[10]."', '".$resultUnitedPlayer[11]."', '".$resultUnitedSub[1]."', '".$resultUnitedSub[2]."', '".$resultUnitedSub[3]."', '".$resultUnitedSub[4]."', '".$resultUnitedSub[5]."', '".$resultUnitedSub[6]."', '".$resultUnitedSub[7]."', '".$resultUnitedSub[8]."', '".$resultUnitedSub[9]."', '".$resultUnitedSub[10]."', '".$resultUnitedSub[11]."', '".$resultOppoPlayer[1]."', '".$resultOppoPlayer[2]."', '".$resultOppoPlayer[3]."', '".$resultOppoPlayer[4]."', '".$resultOppoPlayer[5]."', '".$resultOppoPlayer[6]."', '".$resultOppoPlayer[7]."', '".$resultOppoPlayer[8]."', '".$resultOppoPlayer[9]."', '".$resultOppoPlayer[10]."', '".$resultOppoPlayer[11]."', '".$resultOppoSub[1]."', '".$resultOppoSub[2]."', '".$resultOppoSub[3]."', '".$resultOppoSub[4]."', '".$resultOppoSub[5]."', '".$resultOppoSub[6]."', '".$resultOppoSub[7]."', '".$resultOppoSub[8]."', '".$resultOppoSub[9]."', '".$resultOppoSub[10]."', '".$resultOppoSub[11]."')";
array_push($sqlStatements, $sql);
$sql = "DELETE FROM " . $table2 . " WHERE date='".$resultDate."' AND opposition='".$resultOppo."'";
array_push($sqlStatements, $sql);
$sql = "INSERT INTO latest_news VALUES (now(), 'New Result Added', 'Cambridge United ".$resultGoalsfor." - ".$resultGoalsagainst." ".$resultOppo."', 'match_result.php?season=".$_SESSION['season']."&date=".$resultDate."')";
array_push($sqlStatements, $sql);

try {
$mysqli->autocommit(FALSE);

for ($i = 0; $i < count($sqlStatements); $i++) {
$stmt = $mysqli->prepare($sqlStatements[$i]);
echo $sqlStatements[$i] . "</br>";
$stmt->execute();
}

$mysqli->commit();
} catch(Exception $e) {
$mysqli->rollback();
$all_query_ok = false;
$reason = $e;
}
$mysqli->close();

最后一个查询失败,但所有其他查询都没问题。

错误是:

[08-Aug-2014 14:14:05 Europe/London] PHP Fatal error:  Call to a member 
function execute() on a non-object in /home/cufcstat/public_html/admin/ar.php
on line 317

我无法看到问题,有人可以吗? SQL会停止执行代码,但对我来说SQL看起来是正确的吗?

对于凌乱的代码感到抱歉......

2 个答案:

答案 0 :(得分:1)

您在递增之前检查$i,因此您正在尝试准备一份不存在的声明

++$i; //returns the value of $i then increments it
$i++; //increments then returns

答案 1 :(得分:0)

问题是当骑车到我正在做的下一个玩家时停止重复SQL语句$ playerSQl =“”;但这是错误的,就好像一个sub没有出现它在$ sqlStatements中插入“”并尝试将该空间作为SQL查询执行。

相反,更改为$ playerSQL = null,并在插入数据库之前进行了检查以确保不是空值。