webForumDet fria alternativet

Hämta fält ur databas

PHP

9 svar · 256 visningar · startad av visslaren

Medlem sedan juli 20011 222 inlägg
Frågan#1

Har ett litet problem som jag skulle behöva hjälp med. Håller på ett mysqlgränssnitt till en hem sida och behöver hämta vilka fält som finns i en tabell.
Hittade ett script i manualen som jag inte får att fungera. har modifierat det smått, fungerade dock inte i ickemodifierat skick heller. Får inget felmeddelande och inget skrivs ut.

$länk=mysql_connect("****", "****", "****");
$db=mysql_select_db("****");

$fields = mysql_list_fields($db, $tbl, $länk);
$columns = mysql_num_fields($fields);
$i = 0;
while ($i < $columns) {

print mysql_field_name($fields, $i) ."\n";
$i++;
}

Nån som ser nåt fel?

Medlem sedan okt. 20023 030 inlägg
#2

I mysql_list_fields är din första parameter $db, dvs handlet till en databas när det egentligen ska vara namnet på en databas.

$tbl innehåller ingenting eller sätter du det före koden du lämnat?

Sen ska man aldrig ha å, ä, ö i ett variabelnamn.

D.v.s

$link = mysql_connect("host", "user", "password");
$db = mysql_select_db("databasnamn");

$fields = mysql_list_fields("databasnamn", "tabellnamn", $link);
$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {
    echo mysql_field_name($fields, $i) . "\n";
}

// Glöm inte att stänga databasen
mysql_close($link);

Jag använder echo istället för print men det är mest en smaksak. :)

Medlem sedan juli 20011 222 inlägg
#3

Fungerar överallt med $länk (dum vana sen jag lärde mig php. stod länk i exemplet jag läste med mysql :) ) har provat med link vilket inte gjorde nån skillnad överhuvudtaget.
$tbl innehåller värde som den får föregående sida. Har även provat med att skriva databas och tabellnamn istället för variablarna där men det fungerar inte heller.

Medlem sedan mars 200399 inlägg
#4

Testa med fnuttar kring '$link' och kanske även övriga variabelnamn. Jag gör det felet hela tiden.

Medlem sedan juli 20011 222 inlägg
#5

Det gjorde ingen skillnad

Medlem sedan okt. 20023 030 inlägg
#6

visslaren skrev:

Fungerar överallt med $länk (dum vana sen jag lärde mig php. stod länk i exemplet jag läste med mysql :) ) har provat med link vilket inte gjorde nån skillnad överhuvudtaget.

Det var inte meningen heller. Tänkte mer som att man bör ha det som huvudregel. Att inte ha med å, ä och ö i variabelnamn.

Medlem sedan juli 20011 222 inlägg
#7

Fick inte ordning på det där scriptet, men jag hittade ett annat som fungerar minst lika bra :)

http://se.php.net/manual/en/function.mysql-fetch-field.php <- utgick från example 1 där ifall nån annan som behöver samma sak undrar :)

Medlem sedan juli 20011 222 inlägg
#8

Ok, ny fråga relaterat till detta.

Hur får man reda på om ett fält är satt till auto_increment eller inte?
Har försökt med "mysql_field_flags()" som tydligen ska fixa det men får det inte att fungera.

Medlem sedan juli 20011 222 inlägg
#9

Ingen som vet?

Har försökt med:

$flags = mysql_field_flags($result);
print "$flags->auto_increment";

Men det gjorde ingen som helst skillnad. Inget skrivs ut :(

länk till funktionen i manualen: http://se.php.net/manual/en/function.mysql-field-flags.php

Medlem sedan juli 20011 222 inlägg
#10

Jag löste det med:

$flags = explode(" ", mysql_field_flags($result, $i));
if (in_array ("auto_increment", $flags)) {
print "auto_increment"; 
}
else {
print "&nbsp;";
}

:)

468 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
327 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
330 ms — ändringar (db)