Avatar billede bing89 Nybegynder
20. september 2013 - 17:14 Der er 14 kommentarer og
1 løsning

Træk rækkenavnes data type ud i et php script.

Jeg ønsker at trække data typerne ud på rækkerne fra en databasetabel.... Hvordan gør man det?


Jeg bruger prepared statement :)
Avatar billede arne_v Ekspert
20. september 2013 - 17:17 #1
SELECT COLUMN_NAME,DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ?
Avatar billede arne_v Ekspert
20. september 2013 - 17:18 #2
Jeg antager at det er kolonne navne og typer - raekker har hverken navne eller typer.
Avatar billede bing89 Nybegynder
20. september 2013 - 17:52 #3
Ja kolonner selvfølgelig :)

Fejl meddelelse:
Fatal error: Call to a member function bind_result() on a non-object

Min kode:

$getDataType = $objCon->prepare('SELECT menuName ,DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ? ');
 
    $table_navn = "vovidaMenu";
    $getDataType->bind_result('s', $table_navn);
    $getDataType->execute();
    echo "hey";
    $getDataType->bind_result($menuname, $datatype);   
    $getDataType->fetch();
        print_r($datatype);
    $getDataType->close();
Avatar billede bing89 Nybegynder
20. september 2013 - 18:09 #4
den øverste $getDataType->bind_result, er blevet rettet til bind_param... men jeg får samme fejl..
Avatar billede arne_v Ekspert
20. september 2013 - 18:16 #5
SELECT COLUMN_NAME,DATA_TYPE

ikke

SELECT menuName ,DATA_TYPE
Avatar billede bing89 Nybegynder
20. september 2013 - 18:31 #6
Arh min fejl...

Mange tak for hjælpen :) Hvis du samler på point så smid et svar..
Avatar billede arne_v Ekspert
20. september 2013 - 18:40 #7
svar
Avatar billede arne_v Ekspert
20. september 2013 - 18:40 #8
det er ret nyttigt at kende  INFORMATION_SCHEMA
Avatar billede arne_v Ekspert
20. september 2013 - 18:41 #9
Avatar billede bing89 Nybegynder
20. september 2013 - 18:49 #10
:) Mange tak, for linket.. Det ligner der er flere funktioner som jeg godt kunne få brug for inden længe og ellers er det altid godt med råd.(

Jeg er ved at uddanne mig til web-integrator, men vi lærer kun det 'gamle' kald :

$sql = "SELECT kolonne FROM tabel";

$rel = $objCon->query($sql);

while($row = $rel->fetch_array()){}

) Så mange gange tak for hjælpen :)
Avatar billede arne_v Ekspert
20. september 2013 - 19:33 #11
der er ogsaa andre MySQL SQL kommandoer til ta hente den slags info (SHOW TABLE), men INFORMATION_SCHEMA.COLUMNS er SQL standard ikke MySQL specifik d.v.s. at hvis du bruger INFORMATION_SCHEMA.COLUMNS saa er din kode nemmere at flytte til en anden database

(hvis du vil have mulighed for flytte til en anden database burde du saa skifte fra mysqli til PDO, men en ting af gangen)
Avatar billede bing89 Nybegynder
20. september 2013 - 19:46 #12
Nu gik jeg mest over til prepared statement, fordi jeg læste at det var mere sikkert.. :)

Men hvis PDO er ligeså, eller om ikke mere sikkert og man kan det samme + flytte til en anden database (og måske mere).. Så kan jeg vel lige så godt lærer det, inden jeg ender med at blive vant til prepared statement, eller hvad?
Avatar billede arne_v Ekspert
20. september 2013 - 19:53 #13
PDO bruger ogsaa prepared statement.

:-)

http://www.php.net/manual/en/pdo.prepare.php
Avatar billede arne_v Ekspert
20. september 2013 - 19:54 #14
De fleste vil mene at PDO er lidt nemmere at bruge end mysqli.

Og saa er det nemt at skifte mellem MySQL, SQLServer, PostgreSQL, Oracle etc. med PDO.
Avatar billede bing89 Nybegynder
20. september 2013 - 20:11 #15
Arh okay.. Jeg vil prøve det af, og se om jeg kan finde hoved og hale i det :)

Mange tak for hjælpen endnu engang.. Det altid godt at høre om hvad der findes af andre og måske smartere muligheder :)
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
Computerworld tilbyder specialiserede kurser i database-management

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