Avatar billede sunlock Nybegynder
08. oktober 2004 - 11:36 Der er 3 kommentarer og
1 løsning

SQL: Hente navnet på kolonnen (mysql_field_name)

Jeg sidder og arbejder med at få lavet noget meget dynamisk sql. Faktisk, så kender jeg kun til at der findes en database med nogle tabeller. Disse tabeller kender jeg så ikke kolonnenavnet på...

Jeg ved at man kan bruge:
http://us2.php.net/manual/en/function.mysql-field-name.php
...men jeg kan ikke rigtig få det til at spille. Jeg har taget udgangspunkt i det eksempel som findes på siden, men får en underlig "print" ved:
----
echo mysql_field_name($res, 0) . "\n";
echo mysql_field_name($res, 2);
----

Nogen som har prøvet at arbejde med dette?
Avatar billede sukos Juniormester
08. oktober 2004 - 11:49 #1
Da du ikke ved hvad de forskellige tables indeholder, kan du jo heller ikke blot brug 0 2 o.s.v.


$fields = mysql_list_fields($database, $table, $db);
for($i = 0; $i < mysql_num_fields($fields); $i++) {
echo mysql_field_name($fields, $i) ."<br>\n";
}

$database er navnet på database.
$table er navnet på table.
$db er connect til mysql
Avatar billede sukos Juniormester
08. oktober 2004 - 11:52 #2
HAr forrsten denne, som vælger en tilfældig record

<?php

$database = "database";

$host = "localhost";
$user = "user";
$pass = "pass";

$db = mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($database, $db) or die (mysql_error());

$dbs = mysql_query("SHOW TABLES FROM `". $database ."`") or die (mysql_error());
$tables = array();
while($v = mysql_fetch_row($dbs)) {
$tables[] = $v[0];
}

mysql_free_result($dbs);
$getdb = rand(0, count($tables) -1);

echo"<p> Tablevalg: <b>". $tables[$getdb] ."</b></p>";

$felter = array();
$fields = mysql_list_fields($database, $tables[$getdb], $db);
for($i = 0; $i < mysql_num_fields($fields); $i++) {
$felter[] = mysql_field_name($fields, $i);
}
$getfelt = rand(0, count($felter) -1);
echo"<p> Kolonnevalg: <b>". $felter[$getfelt] ."</b></p>";

$last = mysql_query("SELECT `". $felter[$getfelt] ."` FROM `". $tables[$getdb] ."` DECS LIMIT 0,1") or die (mysql_error());
echo"<p>Slutresultat: ". mysql_result($last, 0);
mysql_free_result($last);


?>
Avatar billede sunlock Nybegynder
08. oktober 2004 - 12:55 #3
Okay - der var lidt flere ting jeg ikke lige havde tænkt på... måske skulle jeg prøve at sove lidt mere :-)
Smid lige et svar :-)
Avatar billede sukos Juniormester
09. oktober 2004 - 13:16 #4
Ja, det med at sove, det er sgu ærgerligt at man ikke bare kan nørde igennem! :O)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester