I have a small api that I fetch remotely to get a Json (from a MSSQL DB) to insert into a Mysql DB:
{
"data": [{
"BrandID": 1,
"AccountTranID": "138483",
"Datetime": {
"date": "2019-07-31 21:26:15.513000",
"timezone_type": 3,
"timezone": "UTC"
},
"PartyID": 1819748,
"UserID": "adel2X",
"Currency": "USD",
"ProductID": 3,
"ProductCode": "EBZZ",
"ProductTranID": "EBZZ-f90f07cdfeff820904c56696dd72e321",
"GameInfoID": 698,
"GameID": "80233",
"GameTranID": "80238cc6c07f85144d8ade97760f2cbdbff",
"TranType": "GAME_BET",
"AmountReal": "-.010000000000000000",
"AmountPlayableBonus": ".000000000000000000",
"AmountReleasedBonus": ".000000000000000000",
"BalanceReal": ".000000000000000000",
"BalancePlayableBonus": ".000000000000000000",
"BalanceReleasedBonus": ".000000000000000000",
"RollbackTranID": null,
"RollbackTranType": null
}, {
"BrandID": 1,
"AccountTranID": "138484",
"Datetime": {
"date": "2019-07-31 21:26:16.037000",
"timezone_type": 3,
"timezone": "UTC"
},
"PartyID": 1819748,
"UserID": "adel2X",
"Currency": "USD",
"ProductID": 3,
"ProductCode": "GROOVY",
"ProductTranID": "Bo-f90f07cdfeff820904c56696dd72e321re",
"GameInfoID": 698,
"GameID": "80233",
"GameTranID": "80238cc6c07f85144d8ade97760f2cbdbff",
"TranType": "GAME_WIN",
"AmountReal": ".000000000000000000",
"AmountPlayableBonus": ".000000000000000000",
"AmountReleasedBonus": ".000000000000000000",
"BalanceReal": ".000000000000000000",
"BalancePlayableBonus": ".000000000000000000",
"BalanceReleasedBonus": ".000000000000000000",
"RollbackTranID": null,
"RollbackTranType": null
}]
}
then I try to insert it into the table DataFeed of my local Mysql DB using the following code:
<?php
$conn = new PDO("mysql:host=mysite.com;dbname=mydb", 'root', 'xxxx');
$data = file_get_contents('https://myapi.com/test/test3.php?table=DataFeed&key=mykey&trans=xxx');
$products = json_decode($data);
foreach ($products as $product) {
$stmt = $conn->prepare('insert ignore into DataFeed (BrandID, AccountTranID, Datetime, PartyID, UserID, Currency, ProductID, ProductCode, ProductTranID, GameInfoID, GameID, GameTranID, TranType, AmountReal, AmountPlayableBonus, AmountReleasedBonus, BalanceReal, BalancePlayableBonus, BalanceReleasedBonus, RollbackTranID, RollbackTranType) values(:BrandID, :AccountTranID, :Datetime, :PartyID, :UserID, :Currency, :ProductID, :ProductCode, :ProductTranID, :GameInfoID, :GameID, :GameTranID, :TranType, :AmountReal, :AmountPlayableBonus, :AmountReleasedBonus, :BalanceReal, :BalancePlayableBonus, :BalanceReleasedBonus, :RollbackTranID, :RollbackTranType)');
$stmt->bindValue('BrandID', $product->BrandID);
$stmt->bindValue('AccountTranID', $product-> AccountTranID);
$stmt->bindValue('Datetime', $product-> Datetime);
$stmt->bindValue('PartyID', $product-> PartyID);
$stmt->bindValue('UserID', $product-> UserID);
$stmt->bindValue('Currency', $product-> Currency);
$stmt->bindValue('ProductID', $product-> ProductID);
$stmt->bindValue('ProductCode', $product-> ProductCode);
$stmt->bindValue('ProductTranID', $product-> ProductTranID);
$stmt->bindValue('GameInfoID', $product-> GameInfoID);
$stmt->bindValue('GameID', $product-> GameID);
$stmt->bindValue('GameTranID', $product-> GameTranID);
$stmt->bindValue('TranType', $product-> TranType);
$stmt->bindValue('AmountReal', $product-> AmountReal);
$stmt->bindValue('AmountPlayableBonus', $product-> AmountPlayableBonus);
$stmt->bindValue('AmountReleasedBonus', $product-> AmountReleasedBonus);
$stmt->bindValue('BalanceReal', $product-> BalanceReal);
$stmt->bindValue('BalancePlayableBonus', $product-> BalancePlayableBonus);
$stmt->bindValue('BalanceReleasedBonus', $product-> BalanceReleasedBonus);
$stmt->bindValue('RollbackTranID', $product-> RollbackTranID);
$stmt->bindValue('RollbackTranType', $product-> RollbackTranType);
$stmt->execute();
}
?>
MySql Db has the following structure:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for DataFeed
-- ----------------------------
DROP TABLE IF EXISTS `DataFeed`;
CREATE TABLE `DataFeed` (
`BrandID` int(11) NOT NULL,
`AccountTranID` bigint(20) NOT NULL,
`Datetime` datetime(3) NOT NULL,
`PartyID` int(11) NOT NULL,
`UserID` varchar(100) CHARACTER SET utf8 NOT NULL,
`Currency` char(3) CHARACTER SET utf8 NOT NULL,
`ProductID` int(11) DEFAULT NULL,
`ProductCode` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
`ProductTranID` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
`GameInfoID` int(11) DEFAULT NULL,
`GameID` varchar(100) COLLATE utf8_swedish_ci DEFAULT NULL,
`GameTranID` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
`TranType` varchar(10) COLLATE utf8_swedish_ci NOT NULL,
`AmountReal` decimal(38,18) NOT NULL,
`AmountPlayableBonus` decimal(38,18) NOT NULL,
`AmountReleasedBonus` decimal(38,18) NOT NULL,
`BalanceReal` decimal(38,18) NOT NULL,
`BalancePlayableBonus` decimal(38,18) NOT NULL,
`BalanceReleasedBonus` decimal(38,18) NOT NULL,
`RollbackTranID` bigint(20) DEFAULT NULL,
`RollbackTranType` varchar(10) COLLATE utf8_swedish_ci DEFAULT NULL,
UNIQUE KEY `AccountTranID` (`AccountTranID`,`PartyID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci;
SET FOREIGN_KEY_CHECKS = 1;
When running my php code, it does not generate an error but does not insert the rows as expected... (One row, 0 only)
It does not seem to be a PDO issue since there is at least connection with the Mysql DB...
what am I doing wrong?