【发布时间】:2016-07-26 11:35:16
【问题描述】:
有人可以帮我调试一下吗
<?php
$file_name = basename(__FILE__,'.php');
include("conf.php");
include("XMLSoccer.php");
$years = 1; ///<-------NUMBER OF YEARS TO GO BACK
$leagueretrive = 3; ///<--------THE LEAGUE ID TO RETRIEVE DATA FOR
$date1 = date('y', strtotime("-$years years"));
$date2 = date("y");
//CHECKING IF TABLE EXIST IF NOT CREATE NEW
$table = $file_name;
$query = "SELECT ID FROM " . $table;
$resultat = mysqli_query($conn,$query);
if(empty($resultat)) {
echo "<p>" . $table . " table does not exist</p>";
$query = mysqli_query($conn,"CREATE TABLE IF NOT EXISTS $file_name (
Id int NOT NULL PRIMARY KEY,
HomeGoalDetails varchar(800) NOT NULL,
)CHARACTER SET utf8 COLLATE utf8_general_ci");
}
else {
echo "<p>" . $table . "table exists</p>";
} // else
/////GETING THE DATA FROM SERVICE
try {
$soccer = new XMLSoccer($api_key);
$soccer->setServiceUrl("http://www.xmlsoccer.com/FootballDataDemo.asmx");
$results = $soccer->GetHistoricMatchesByLeagueAndSeason(array("league"=>$leagueretrive,"seasonDateString"=>"$date1$date2"));
print_r($results);
} catch (XMLSoccerException $e) {
echo "XMLSoccerException: " . $e->getMessage();
}
foreach ($results->Match as $team) {
$id = $team->Id;
$homeGoalDetails = $team->HomeGoalDetails;
///INSERTING DATA INTO THE TABLE
$sql = "INSERT INTO $file_name (HomeGoalDetails)
VALUES ('$homeGoalDetails')
on duplicate key update HomeGoalDetails='$homeGoalDetails'";
}
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
我得到的回应
错误:INSERT INTO testing2 (HomeGoalDetails) VALUES ('35': Stefan Johansen;4': 惩罚 Leigh Griffiths;') 重复密钥更新 HomeGoalDetails='35': Stefan Johansen;4': 点球 Leigh Griffiths;' 您的 SQL 语法有错误;检查手册 对应于您的 MariaDB 服务器版本,以便使用正确的语法 附近': Stefan Johansen;4': 点球 Leigh Griffiths;') 重复 第 2 行的密钥更新 HomeGo' 进程以退出代码 0 结束
【问题讨论】:
-
您的代码中的
INSERT INTO testing2.....查询在哪里? -
您的错误在于这一行:$sql = "INSERT INTO $file_name (HomeGoalDetails) VALUES ('$homeGoalDetails') on duplicate key update HomeGoalDetails='$homeGoalDetails'";
-
这可能是准备好的语句如果你使用它们会为你解决的问题
-
另外你定义了一个主键,但似乎没有插入一个主键,你确定你不是打算也让它
AUTO_INCREMENT?