Hallå, jag har absolut ingen aning vad som kan vara fel, då alla andra funktioner funkar fint, även dom andra querys jag använder på samma satt, fast mot en annan databas tabell.
Men så här ser iallafall koden ut:
function getmain(){
global $db;
$main = $db->query("SELECT * FROM w_home");
$main->execute();
$home = $main->fetchAll();
//var_dump($main);
echo $home['main'];
//return $home;
}
jag får ett error där det står att "main" är undefined index.
Jag har slängt in ett echo direkt i functionen just nu då jag har suttit och felsökt ett tag nu.
Och jag har kollat upp mot databasen, det finns en rad där som heter main. men av något anledning så vill just inte denna funka. Men jag förstår inte vad jag har gjort för fel.
Undefined index betyder ju att $home inte har något index med nyckeln main. Och kollar du på outputen så ser du att strukturen är uppbyggd så att du accessar värdet via $home[0]['main'].
varför [0] på slutet ?? tar den inte bara ut den först positionen då? då jag kommer att använda alla som finns i den tabellen. men det vill inte funka alls :P
varför [0] på slutet ?? tar den inte bara ut den först positionen då? då jag kommer att använda alla som finns i den tabellen. men det vill inte funka alls :P
det är den första raden i din träff skulle jag gissa på, eftersom du ha en array av träffar.
Undefined index betyder ju att $home inte har något index med nyckeln main. Och kollar du på outputen så ser du att strukturen är uppbyggd så att du accessar värdet via $home[0]['main'].
A jag såg det nu, men det var endå skumt att det blir så att den ligger där. Måste blivit något skumt när jag satte upp databasen :S
Testade även nu och det funkade, men jag fattar inte varför den [0] har hamnat där alltså :P
A jag såg det nu, men det var endå skumt att det blir så att den ligger där. Måste blivit något skumt när jag satte upp databasen :S
Du får väl ut samtliga rader, eftersom du använder dig av fetchAll(), men eftersom det bara finns ett resultat så kommer det? Men använd foreach($home as $row) så kan du printa $row['main'], och behöver inte tänka på hur många rader som kan komma.
Du får väl ut samtliga rader, eftersom du använder dig av fetchAll(), men eftersom det bara finns ett resultat så kommer det? Men använd foreach($home as $row) så kan du printa $row['main'], och behöver inte tänka på hur många rader som kan komma.
Jo det är sant, men hur gör jag då om jag vill returnera ut te,x $row['main'] och $row['sub1']?
eller räcker det om man skriver typ så här:
foreach($home as $row]{
return $row
}
echo $row['main']
echo $row['sub1']
function getmain(){
global $db;
$main = $db->query("SELECT * FROM w_home");
$main->execute();
$home = $main->fetchAll();
return $home[0];
}
eller
function getmain(){
global $db;
$main = $db->query("SELECT * FROM w_home");
$main->execute();
$home = $main->fetchAll()[0];
return $home;
}
borde räcka, rätt onödigt att göra en foreach om du ändå vet att du skall hämta ut första positionen (i min värd så är båda kod exemplen exakt samma sak, men kanske inte i PHP).
får tacka för all hjälp, men det fick bli denna lösning på det hela, då jag behöver få ut alla kolumner i ett senare skede, så det är nog en liten blandning på alla svar jag har fått här :)
Så här blev koden iallafall:
function getmain(){
global $db;
$main = $db->query("SELECT * FROM w_home");
$main->execute();
foreach ($main as $home) {
return $home;
}
}
$home = getmain();
echo $home['main'];
får tacka för all hjälp, men det fick bli denna lösning på det hela, då jag behöver få ut alla kolumner i ett senare skede, så det är nog en liten blandning på alla svar jag har fått här :)
Så här blev koden iallafall:
function getmain(){
global $db;
$main = $db->query("SELECT * FROM w_home");
$main->execute();
foreach ($main as $home) {
return $home;
}
}
$home = getmain();
echo $home['main'];
få ursäkta mig men det ser verkligen inte vackert ut
få ursäkta mig men det ser verkligen inte vackert ut
Hehe a nej det är nog sant, men som sagt är fortfarande relativt ny på php, så jag jobbar på det. försöker mest att lära mig hur man skriver allt nu så man faktiskt kan skriva saker. Sen snyggheten och hur man kan lösa det smartare osv kommer förhoppningsvis på tiden :)
Jag vill slänga in en liten kommentar här. När jag gör som grennfox ville göra i sitt första inlägg så använder jag mig av fetch() istället för fetchAll(). Då får man bara första raden och jag, personligen, tycker att det ser snyggare ut.
Dessutom borde väl inte funktionen skriva ut resultatet? Borde den inte returnera det?
Vidare är det rekommenderat att man bara hämtar ut de fält man behöver från tabellen (något jag är expert på att inte göra, jag vet).
function getmain(){
global $db;
$main = $db->query("SELECT main FROM w_home");
$main->execute();
$home = $main->fetch();
return $home['main'];
}
echo getmain();