Door
James C
op 25-05-2015 16:24
gewijzigd op 25-05-2015 16:24
1.212 views
Hoi,
Ik wil graag de uitvoer van mijn query (die nu in een array staat) omzetten naar variabelen waarbij elk resultaat een andere variabelenaam heeft.
Via mijn query probeer ik van 4 verschillende tabellen de som te krijgen van het aantal seconden. Dit werkt want ze staan in de query. Alleen wil ik verderop in mijn script kunnen werken met de vars $seconden1 $seconden2 $seconden3 $seconden4.
Hoe krijg ik dit voor elkaar?
Mijn script:
<?php
$result = $mysqli->query("SELECT table_name FROM tables WHERE table_schema = 'testdata' ORDER BY UNIX_TIMESTAMP(create_time) DESC LIMIT 0,4") ;
if (mysqli_num_rows($result) > 0)
{
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
$tabelnaam = $row['table_name'];
if ($mysqli->connect_errno)
{
printf("Fout bij verbinden: %s\n", $mysqli->connect_error);
exit();
}
if ($result2 = $mysqli2->query("SELECT SUM(seconds) AS seconden FROM $tabelnaam; "))
{
$row2 = mysqli_fetch_array($result2);
Je gaat tabelnamen ophalen? Vreemd.
Regels 10 t/m 14 horen niet een een loop, maar direct na het maken van de databaseverbinding.
Regel 20 hoort voor de while te staan.
Regels 21, 22, 23, 25 en 26 kunnen weg.
Regel 24 => $seconden[] = $row2['seconden'];
De reden dat ik tabelnamen moet ophalen is omdat ik een som moet laten zien van het aantal seconden in de laatste 4 door de gebruiker ingevoerde tabellen (elke upload die een gebruiker doet is een nieuwe tabel).
Ik zou niet weten hoe ik er anders achter moet komen welke tabellen als laatste zijn aangemaakt?
Ik heb het nu als volgt en het werkt prima, bedankt!
<?php
$result = $mysqli->query("SELECT table_name FROM tables WHERE table_schema = 'testdata' ORDER BY UNIX_TIMESTAMP(create_time) DESC LIMIT 0,4") ;
if (mysqli_num_rows($result) > 0)
{
$seconden = array();
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
$tabelnaam = $row['table_name'];
if ($result2 = $mysqli2->query("SELECT SUM(seconds) AS seconden FROM $tabelnaam; "))
{
$row2 = mysqli_fetch_array($result2);
De reden dat ik tabelnamen moet ophalen is omdat ik een som moet laten zien van het aantal seconden in de laatste 4 door de gebruiker ingevoerde tabellen (elke upload die een gebruiker doet is een nieuwe tabel).
Ik zou niet weten hoe ik er anders achter moet komen welke tabellen als laatste zijn aangemaakt?
Aan elkaar koppelen...
Dus gewoon 1 tabel voor je gebruikers, 1 voor je uploads.
En dan doe je SELECT tijdstip FROM een_tabel WHERE userid = 3 ORDER BY time LIMIT 4, 1
Dan krijg je de de tijd van het werkstuk van 4 geleden.
Of beter dan:
SELECT NOW() - tijdstip FROM een_tabel WHERE userid = 3 ORDER BY time LIMIT 4, 1
Dan krijg je gewoon het aantal seconden terug van de 4-geleden-aangeleverde-upload bij gebruiker 3.
Mits tijdstip een TIMESTAMP-veldsoort is.