2014-05-15 3 views
0

Pour un projet Im interrogeant l'API d'un échange Bitcoin via JSON et Im essayant de l'importer dans une base de données mysql.Instruction d'insertion de tableau multidimensionnel

Un var_dump simple du résultat me donne ce qui suit:

array (size=141) 
'BTC_LTC' => 
array (size=7) 
    'last' => string '0.0235' (length=6) 
    'lowestAsk' => string '0.02359999' (length=10) 
    'highestBid' => string '0.0235' (length=6) 
    'percentChange' => string '-0.00635047' (length=11) 
    'baseVolume' => string '8.60317949' (length=10) 
    'quoteVolume' => string '364.54762523' (length=12) 
    'isFrozen' => string '0' (length=1) 

donc j'ai créé les colonnes suivantes dans la table poloniex:

Paire, dernier, LowestAsk, HighestBid, PercentChange, BaseVolume, QuoteVolume , IsFrozen dont tous sont INT (50) sauf la colonne 'Pair' qui est un VARCHAR (50).

Comme vous pouvez le voir à partir de la structure des données, la paire peut être dérivée comme la clé principale et les autres composants du second tableau dans chaque rangée.

j'ai tout compris loin pour l'interroger dans la base de données:

$stmt = $dbc->stmt_init(); 
$stmt->prepare("INSERT INTO `poloniex` (`Last`, `LowestAsk`, `HighestBid`, `PercentChange`, `BaseVolume`, `QuoteVolume`, `IsFrozen`) VALUES(?, ?, ?, ?, ?, ?, ?)"); 
foreach($ticker as $row) 
{ 
    $stmt->bind_param('ddddddi', $row['last'], $row['lowestAsk'], $row['highestBid'], $row['percentChange'], $row['baseVolume'], $row['quoteVolume'], $row['isFrozen']); 
    $stmt->execute(); 
} 
$stmt->close(); 

dbc $ est la connexion de base de données à l'mysqlserver locale.

Question: Comment puis-je également insérer la paire dans la base de données?

+0

Qu'est-ce que 'Pair' est censé être? Essayez-vous d'obtenir le 'BTC_LTC'? Je suis un peu confus sur la façon dont vous obtenez cette valeur et quels ennuis vous avez. Je ne peux pas voir comment c'est "dérivé". –

+1

1. Avez-vous une clé primaire sur cette table? 2. Qu'est-ce que c'est? 3. Qu'est-ce que "Pair"? 4. Pourquoi n'est-il pas inséré avec le reste des données? – Sammitch

+0

La paire est en effet BTC_LTC – user3586358

Répondre

1

Il semble que pair est la clé, essayez:

foreach($ticker as $pair => $row) 

Ensuite, utilisez $pair. Donc quelque chose comme:

$stmt->prepare("INSERT INTO `poloniex` 
(`Pair`, `Last`, `LowestAsk`, `HighestBid`, `PercentChange`, `BaseVolume`, `QuoteVolume`, `IsFrozen`) 
VALUES(?,?, ?, ?, ?, ?, ?, ?)"); 

foreach($ticker as $pair => $row) 
{ 
    $stmt->bind_param('sddddddi', $pair, $row['last'], $row['lowestAsk'], $row['highestBid'], $row['percentChange'], $row['baseVolume'], $row['quoteVolume'], $row['isFrozen']); 
    $stmt->execute(); 
} 
Questions connexes