28. september 2000 - 11:28 Der er 24 kommentarer og
1 løsning

Problemer med MS Access adgang i PHP via ODBC

Jeg har på min Win98 maskine sat en ODBC -Kilde op kaldet \"mogm\". Kilden referer til databasen mogm.mdb.

Derefter bruger jeg følgende script til at trække data ud:

<?php
  $conn = odbc_connect(\"mogm\", \"\", \"\")
  or die(\"Couldn\'t connect to datasource.\");

  $sql = \"SELECT * FROM test\";

  odbc_exec($conn,$sql);   

  if($result = odbc_exec($conn, $sql) or die(\"Could not execute.\")) {
    $i = 1;
    while(odbc_fetch_row($result, $i)) {
     
      $name = odbc_result($result, \"Navn\");
      echo \"No $i\'s name is $name<BR>\";
      $i++;
    }
  }
  odbc_close_all();
?>

Problemet er så at denne fejl kommer:

Warning: SQL error: [Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on \'test\'., SQL state 42000 in SQLExecDirect in C:\\Web\\default.php on line 7

Hvor ændre man disse permissions, eller rettere sagt hvordan får jeg gennemført forespørgslen.
Avatar billede barlach Nybegynder
28. september 2000 - 11:36 #1
har du paasword-beskyttelse på din DB ?
i så fald skal det skrives ind i :
$conn = odbc_connect(\"mogm\", \"brugernavn\", \"password\")
28. september 2000 - 11:38 #2
Nej, jeg har ingen passwordbeskyttelse og dermed er felterne også tomme.
Avatar billede powell Nybegynder
28. september 2000 - 11:41 #3
Jeg ville gøre det sådan her:

\'Database objekter
Dim db As Database
Dim rs As Recordset
Dim td As TableDef
Dim fl As Field

\'Åbne databaserne
Set db = CurrentDb()
Set rs = db.OpenRecordset(\"Navn_På_Databasen\", dbOpenTable)

\'Hopper til første position i de to tabeller
rsRadNr.MoveFirst

\'Kør rutine til slut af database
Do Until rsRadNr.EOF

Kør din rutine!

Loop
Avatar billede barlach Nybegynder
28. september 2000 - 11:42 #4
prøv at fjerne
or die(\"Couldn\'t connect to datasource.\");
Avatar billede barlach Nybegynder
28. september 2000 - 11:42 #5
>>powell, det der ligner ASP...
Avatar billede jinxed Nybegynder
28. september 2000 - 11:42 #6
er det både odbc og mdb filen samme version?( 97/2000)?

Jinxed : )
28. september 2000 - 11:43 #7
Jeg mener ikke at problemet er at connecte til selve databasen. Derimod er problemet at man ikke kan tilgå tabellen test, fordi man åbenbart ikke har rettigheder til det.
Avatar billede powell Nybegynder
28. september 2000 - 11:44 #8
Ja, men det er en løsning der virker...
Avatar billede barlach Nybegynder
28. september 2000 - 11:45 #9
$result=odbc_exec($conn,$sql);   
Avatar billede barlach Nybegynder
28. september 2000 - 11:45 #10
>>powell, ikke i php =)
28. september 2000 - 11:46 #11
jinxed>> Jeg har access 97 og ODBC32, så det skulle vist ikke være problemet. Som sagt er det w98 og ikke win2k.
Avatar billede powell Nybegynder
28. september 2000 - 11:48 #12
Hovsa!, Jeg sider da også og sover!
Avatar billede barlach Nybegynder
28. september 2000 - 11:49 #13
prøv det her:

$connect=odbc_connect(\"mogm\",\"\",\"\");
$query =\"SELECT * FROM test\";
$result = odbc_do($connect, $query);
$i=1;
while (odbc_fetch_into($result, &$fields)){
 
   
    $name=fields[0];
    echo \"No $i\'s name is $name<BR>\";
    $i++;
   
}      odbc_close($connect)
Avatar billede barlach Nybegynder
28. september 2000 - 11:50 #14
ups....$name=$fields[0];

hvor 0 er feltet hvor name står
28. september 2000 - 11:51 #15
barlach>> forklar lige \"$result=odbc_exec($conn,$sql);\"
Avatar billede barlach Nybegynder
28. september 2000 - 11:56 #16
alle resultaterne fra forespørgelsen \"odbc_exec($conn,$sql);\"  bliver lagt ind i $result.

derefter vil \"odbc_fetch_into($result, &$fields)){ \" gennemgå $result og smide dem i et array ($fields)

inde i en while-løkke vil den forsætte indtil $result er tom.

28. september 2000 - 12:04 #17
barlach>> jeg tror ikke du er helt med. Scriptet melder fejl allerede i linjen med \"$result=odbc_exec($conn,$sql);\", og altså første gang man prøver på at tilgå tabellen igennem en forespørgsel. Hvis jeg bare kan få forespørgslen gennemført ved jeg godt hvordan man får et resultset ud.
Avatar billede barlach Nybegynder
28. september 2000 - 12:22 #18
nåårrhh...ok =)

det var bare et foreslag som jeg ved virker. For at se om det var din db eller hvilken linie i dit sript der ikke fungerede.

hvis det er linie 7 og linierne passer med det der står i toppen så er det jo denne det er galt med :
odbc_exec($conn,$sql);   

altså enten din $conn eller $sql...g umiddelbart ser de jo rigtige ud. Mangler der nogen ; e.lign. ?

Avatar billede barlach Nybegynder
28. september 2000 - 12:23 #19
jeg kan ikke helt gennemskue hvorfor du har \"odbc_exec($conn,$sql); \" og derefter køre den igen i din if-sætning??
28. september 2000 - 13:40 #20
Du har ret. Det er kun nødvendigt med en af dem. Det ændrer dog ikke noget ved at ingen af dem kan få lov til at røre tabellen \'test\'
Avatar billede barlach Nybegynder
28. september 2000 - 14:03 #21
har du selv lavet din db?
28. september 2000 - 18:37 #22
Ja, og jeg kan sende den til dig i morgen, hvis du har en alternativ e-mail adresse, som du har lyst til at oplyse.

Jeg har tænkt på om det kunne have noget at gøre med adgangsrettigheder i Windows og Access. Jeg har læst andre steder at det fungere med Win NT, men jeg har altså win98.
Avatar billede barlach Nybegynder
28. september 2000 - 18:39 #23
ok...send den til niels@webbook.dk
så prøver at se om jeg kan få liv i den. =)
29. september 2000 - 09:30 #24
Desværre (for jer) fandt jeg selv ud af det. En på mit arbejde har fusket lidt med det i forvejen, og det viser sig at man i MS Access bare skal give samtlige brugere samtlige rettigheder til tabellen under \'Security\'. Det er altså ikke nok bare at oprette sig selv som bruger og derefter kun give sig selv rettigheder.
Avatar billede barlach Nybegynder
29. september 2000 - 10:05 #25
=)
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