У меня есть файл json, и я хочу поместить его в базу данных MySQL, но у меня возникли проблемы при импорте.
это мой json
[
{
"b_id": "1",
"m": "4000",
"w": "5500",
"d": "0",
"side": "2",
"user_id": "27",
"lo": 10,
"ro": 10,
"pts": [
{
"amount": "3500",
"side": "2",
"user_id": "27",
"b_id": "1",
"fid": "2"
},
{
"amount": "3000",
"side": "1",
"user_id": "27",
"b_id": "1",
"fid": "2"
},
{
"amount": "2000",
"side": "2",
"user_id": "20",
"b_id": "1",
"fid": "2"
},
{
"amount": "1000",
"side": "1",
"user_id": "20",
"b_id": "1",
"fid": "2"
}
]
},
{
"b_id": "2",
"m": "6000",
"w": "3000",
"d": "0",
"side": "1",
"user_id": "27",
"lo": 10,
"ro": 9,
"pts": [
{
"amount": "4000",
"side": "1",
"user_id": "27",
"b_id": "2",
"fid": "2"
},
{
"amount": "2000",
"side": "2",
"user_id": "27",
"b_id": "2",
"fid": "2"
},
{
"amount": "1000",
"side": "2",
"user_id": "20",
"b_id": "2",
"fid": "2"
},
{
"amount": "2000",
"side": "1",
"user_id": "20",
"b_id": "2",
"fid": "2"
}
]
},
{
"b_id": "3",
"m": "2000",
"w": "3000",
"d": "0",
"side": "1",
"user_id": "20",
"lo": 10,
"ro": 8,
"pts": [
{
"amount": "2000",
"side": "1",
"user_id": "20",
"b_id": "3",
"fid": "2"
},
{
"amount": "3000",
"side": "2",
"user_id": "20",
"b_id": "3",
"fid": "2"
}
]
},
{
"b_id": "4",
"m": "3000",
"w": "1000",
"d": "0",
"side": "2",
"user_id": "20",
"lo": 8,
"ro": 6,
"pts": [
{
"amount": "1000",
"side": "2",
"user_id": "20",
"b_id": "4",
"fid": "2"
},
{
"amount": "3000",
"side": "1",
"user_id": "20",
"b_id": "4",
"fid": "2"
}
]
},
{
"b_id": "5",
"m": "1000",
"w": "2000",
"d": "0",
"side": "2",
"user_id": "20",
"lo": 3,
"ro": 2,
"pts": [
{
"amount": "2000",
"side": "2",
"user_id": "20",
"b_id": "5",
"fid": "2"
},
{
"amount": "1000",
"side": "1",
"user_id": "20",
"b_id": "5",
"fid": "2"
}
]
}
]
И мой Код для выполнения и pu sh это на mysql базе данных
function initializeBet($conn,$max) {
$d = json_decode(file_get_contents('test.json'),true);
foreach($d as $data => $row) {
foreach($row['pts'] as $values => $pts) {
if(isNotNull($row['m'],$row['w'])) {
if(isMeronNotNull($row['m'],$row['w'])) {
if($pts['side'] == 2) {
$odds = getOdds($row['m'],$row['lo'],$row['ro']);
$ret = round(getMax($pts['amount'],$odds),2);
$amount = round(abs($pts['amount'] - $ret),2);
$points = "INSERT INTO bets(fid,bid,uid,side,amount) VALUES ('".$pts['fid']."','".$pts['b_id']."','".$pts['user_id']."','".$pts['side']."',$amount)";
$conn->query($points);
$users = "UPDATE users SET points = points + $ret WHERE id = '".$pts['user_id']."'";
$conn->query($users);
} else {
$_points = "INSERT INTO bets(fid,bid,uid,side,amount) VALUES ('".$pts['fid']."','".$pts['b_id']."','".$pts['user_id']."','".$pts['side']."','".$pts['amount']."')";
$conn->query($_points);
}
} else {
if($pts['side'] == 1) {
$odds = getOdds($row['w'],$row['ro'],$row['lo']);
$ret = round(getMax($pts['amount'],$odds),2);
$amount = round(abs($pts['amount'] - $ret),2);
$points = "INSERT INTO bets(fid,bid,uid,side,amount) VALUES ('".$pts['fid']."','".$pts['b_id']."','".$pts['user_id']."','".$pts['side']."',$amount)";
$conn->query($points);
$users = "UPDATE users SET points = points + $ret WHERE id = '".$pts['user_id']."'";
$conn->query($users);
} else {
$_points = "INSERT INTO bets(fid,bid,uid,side,amount) VALUES ('".$pts['fid']."','".$pts['b_id']."','".$pts['user_id']."','".$pts['side']."','".$pts['amount']."')";
$conn->query($_points);
}
}
} else if(isMeronIsNull($row['m'])) {
if($pts['side'] == 2) {
$am = $pts['amount'];
$users = "UPDATE users SET points = points + $am WHERE id = '".$pts['user_id']."'";
$conn->query($users);
}
} else if(isWalaIsNull($row['w'])) {
if($pts['side'] == 1) {
$am = $pts['amount'];
$users = "UPDATE users SET points = points + $am WHERE id = '".$pts['user_id']."'";
$conn->query($users);
}
}
/* End */
}
}
}
function isNotNull($meron,$wala) {
return isset($meron) && $meron != 0 && isset($wala) && $wala != 0;
}
function isMeronIsNull($meron) {
return !isset($meron);
}
function isMeronNotNull($meron,$wala) {
return $meron <= $wala;
}
function isWalaIsNull($wala) {
return !isset($wala);
}
function getOdds($bets,$a,$b) {
return ($bets * $b) / $a;
}
$bet = 0;
function getMax($bets,$max) {
global $bet;
$ret = 0;
if($bet < $max) {
$bet += $bets;
$ret = ($bet % $max);
if($ret == $bet)
$ret = 0;
} else {
$ret = $bets;
}
return $ret;
}
проблема в том, что каждый раз, когда я выполняю его, первая строка будет выполняться только, а следующая строка вернется к 0, в чем проблема это
это результат, когда я выполняю код
| id | bid | fid | uid | side | amount
| 455 | 5 | 2 | 20 | 1 | 1000
| 454 | 5 | 2 | 20 | 2 | 0
| 453 | 4 | 2 | 20 | 1 | 0
| 452 | 4 | 2 | 20 | 2 | 1000
| 451 | 3 | 2 | 20 | 2 | 0
| 450 | 3 | 2 | 20 | 1 | 2000
| 449 | 2 | 2 | 20 | 1 | 0
| 448 | 2 | 2 | 20 | 2 | 1000
| 447 | 2 | 2 | 27 | 2 | 2000
| 446 | 2 | 2 | 27 | 1 | 0
| 445 | 1 | 2 | 20 | 1 | 1000
| 444 | 1 | 2 | 20 | 2 | 500
| 443 | 1 | 2 | 27 | 1 | 3000
| 442 | 1 | 2 | 27 | 2 | 3500
, который равен 0 - это следующая строка первой строки. идентификатор auto_increment, первая строка 1 в bid
Спасибо