Beste PHPHulp,

Ik probeer verbinding te maken via een php script met een access database die ik heb gekoppeld aan de ODBC. Maar wanneer ik het php script uitvoer krijg ik: "Connection Failed:" in mijn browser.

De php script ziet er alsvolgt uit:
<?php
$conn=odbc_connect('access_DB','','');
if (!$conn)
  {exit("Connection Failed: " . $conn);}
$sql="SELECT * FROM klanten";
$rs=odbc_exec($conn,$sql);
if (!$rs)
  {exit("Error in SQL");}
echo "<table><tr>";
echo "<th>naam</th>";
echo "<th>woonplaats</th></tr>";
while (odbc_fetch_row($rs))
  {
  $naam=odbc_result($rs,"naam");
  $woonplaats=odbc_result($rs,"woonplaats");
  echo "<tr><td>$naam</td>";
  echo "<td>$woonplaats</td></tr>";
  }
odbc_close($conn);
echo "</table>";
?>


De database is niet beveiligd met een gebruikersnaam of wachtwoord.

Weet iemand misschien hoe ik dit kan oplossen.


Met vriendelijke groet,
Jan Volker
Ik heb nu:

<?php
$conString = '{Microsoft Access Driver (*.mdb)};Dbq=C:\Windows\NTDS\test\access_DB.mdb;';
if (!$conString)
{exit("Connection Failed: " . $conString);}
$sql="SELECT * FROM klanten";
$rs=odbc_exec($conString,$sql);
if (!$rs)
{exit("Error in SQL");}
echo "<table><tr>";
echo "<th>naam</th>";
echo "<th>woonplaats</th></tr>";
while (odbc_fetch_row($rs))
{
$naam=odbc_result($rs,"naam");
$woonplaats=odbc_result($rs,"woonplaats");
echo "<tr><td>$naam</td>";
echo "<td>$woonplaats</td></tr>";
}
odbc_close($conString);
echo "</table>";
?>

Ik krijg nu de foutmelding Error in SQL.

Hoe kan ik dat oplossen?
Al deze pagina eens doorgenomen?
http://www.w3schools.com/php/php_db_odbc.asp

Denk het wel ...
Heb je dit ook in je access database aangepast?


Open the Administrative Tools icon in your Control Panel.
Double-click on the Data Sources (ODBC) icon inside.
Choose the System DSN tab.
Click on Add in the System DSN tab.
Select the Microsoft Access Driver. Click Finish.
In the next screen, click Select to locate the database.
Give the database a Data Source Name (DSN).
Click OK.
Ja dat heb ik doorgenomen. Ik heb ook alle stappen uitgevoerd. Het "Connection Failed" probleem is nu opgelost. Alleen nu heb ik te maken met "Error in SQL".
Dan heb je een error in je query zelf.
Probeer eens met een foutafhandeling?

Dit stukje code moet je helemaal boven je script plaatsen:

# We zetten dit volledig bovenaan

    # errors weergeven
    ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);

    # sql debug
    define('DEBUG_MODE',true);  // true == aan, false == uit

    # functie voor sql debug
    function showSQLError($sql,$error,$text='Error')
    {
        if (DEBUG_MODE)
        {
            return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
        }
        else
        {
            return $text;
        }
    }  


En vervang jouw query door deze eens.

$sql="SELECT * FROM klanten";

#  Check of query is gelukt    
if (($rs = odbc_exec($conn,$sql)) === false)
{
    # als de query fout is -> foutafhandeling
    echo showSQLError($sql,mysql_error(),'Fout met het ophalen.');
}
elseif (odbx_num_rows($rs) == 0)
{
    # De query is gelukt en we hebben net gekeken met _num_rows of er een rij is:
    
    # -> Als er geen rij is echoën we hier:
    echo 'Er is geen lid met dit id!';
}
else
{
   echo 'Query gelukt, nu de gegevens tonen';
}


** Er kunnen foutjes inzitten, heb nog nooit met OBCD gewerkt.
Ik krijg de volgende foutmelding:
Warning: odbc_exec() expects parameter 1 to be resource, string given in C:\Program Files\test\test.php on line 31 Warning: odbc_num_rows() expects parameter 1 to be resource, null given in C:\Program Files\test\test.php on line 36 Er is geen lid met dit id! Warning: odbc_exec() expects parameter 1 to be resource, string given in C:\Program Files\test\test.php on line 47 Error in SQL

Line 31 =
if (($rs = odbc_exec($conString,$sql)) === false)


Line 36 =
elseif (odbc_num_rows($rs) == 0)


Line 47 =
$rs=odbc_exec($conString,$sql);
Heb je en online voorbeeldje?
Maar ik denk dat ik veel te veel met mysql rekening heb gehouden.
Dit voorbeeldje vond ik trouwens nog op internet:

<?php

/**
 * Maak connectie met de database door de volgende code te gebruiken
 **/
 
 $dsn       = 'access';  // Vul hier de naam in die je zelf aan de data source hebt gegeven!!
 $username  = '';
 $password  = '';
 $connectie = odbc_connect($dsn, $user, $pass);
 
 /**
  * Zet de query in een variabele
  **/
  
 $Query = 'SELECT id, voornaam, achternaam FROM klanten';
 
 /**
  * Voer de query uit
  **/
  
  $results = odbc_do($connectie, $Query);
  
 /**
  * Toon de uitvoer op het scherm
  **/
  ?>
  
  <div style="width: 100%; height: 100%">
  
  <?php
  
  while(odbc_fetch_row($results)) {
      $id    = odbc_result($results, 'id');
      $voornaam = odbc_result($results, 'voornaam');
      $achternaam = odbc_result($results, 'achternaam');
      
      ?>
      <div style="width: 100%; height: 10%; background-color: #336699; color: #FFF;">
              <?php echo $achternaam . ' ,' . $voornaam . '<br />'; ?>
      </div>
      <div style="height: 2px; background-color: #FFF;"></div>
 
      <?php
  } 
 
 
 odbc_close($connectie);
?> </div>
@Jan: Waar gebruik je de functie: odbc_connect() ??
Ik zie het nergens. Je hebt nog steeds geen connection handle.
Zie voorbeeld:
$conn=odbc_connect('northwind','','');
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
(ik heb nog nooit met odbc gewerkt, dit voorbeeld staat op de eerder gegeven url)
@Dem Ian
Nee, ik heb helaas geen online voorbeeld. Dit script draait op de IIS van mijn server.

@Aad B
De functie odbc_connect gebruik ik nietmeer. Omdat:
$conn=odbc_connect('access_DB','','');

is vervangen door
$conString = '{Microsoft Access Driver (*.mdb)};Dbq=C:\Windows\NTDS\test\access_DB.mdb;';
Maar nu stop je slechts een string (= tekst) in een variabele.
Meer niet.

Reageren