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
- SanThe - op 20/07/2012 14:28:21

Maar nu stop je slechts een string (= tekst) in een variabele.
Meer niet.

Hmm, dus dan moet ik dit hebben?

$conString = odbc_connect('{Microsoft Access Driver (*.mdb)};Dbq=C:\Windows\NTDS\test\access_DB.mdb;');
Ik gebruik nooit odbc, maar dit ziet er beter uit.
Probeer het zou ik zeggen.
En lees de info eens door op php.net.
Ik krijg nogsteeds "Error in SQL" :(
Maak nette foutafhandeling zodat je de 'echte' foutmelding te zien krijgt.
Wanneer ik de foutenafhandeling van Dem Ian gebruik krijg ik de volgende foutmelding:

Warning: odbc_connect() expects at least 3 parameters, 1 given in C:\Program Files\test\test.php on line 24 Warning: odbc_exec() expects parameter 1 to be resource, null given in C:\Program Files\test\test.php on line 30 Warning: odbc_num_rows() expects parameter 1 to be resource, null given in C:\Program Files\test\test.php on line 35 Er is geen lid met dit id! Warning: odbc_exec() expects parameter 1 to be resource, null given in C:\Program Files\test\test.php on line 47 Error in SQL

Mijn script ziet er dan alsvolgt uit:

<?php
# 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;
        }
    }   

$conn=odbc_connect ($conString = '{Microsoft Access Driver (*.mdb)};Dbq=C:\Windows\NTDS\test\access_DB.mdb;');
if (!$conString)
  {exit("Connection Failed: " . $conn);}
$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 (odbc_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';
} 

$rs=odbc_exec($conn,$sql);
if (!$rs)
  {exit("Error in SQL");}
echo "<table><tr>";
echo "<th>naam</th>";
echo "<th>wonplaats</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>";
?>
odbc_connect php.net

Hij verwacht dsn, username, password en cursor_type(deze is niet verpicht!).
Niet:
$conn=odbc_connect ($conString = '{Microsoft Access Driver (*.mdb)};Dbq=C:\Windows\NTDS\test\access_DB.mdb;');

Maar:
$conn=odbc_connect ('{Microsoft Access Driver (*.mdb)};Dbq=C:\Windows\NTDS\test\access_DB.mdb;', $user, $password);
- SanThe - op 20/07/2012 15:12:41

Niet:
$conn=odbc_connect ($conString = '{Microsoft Access Driver (*.mdb)};Dbq=C:\Windows\NTDS\test\access_DB.mdb;');

Maar:
$conn=odbc_connect ('{Microsoft Access Driver (*.mdb)};Dbq=C:\Windows\NTDS\test\access_DB.mdb;', $user, $password);


Jan geeft aand dat er geen gebruikersnaam of wachtwoord op de db zit. Echter lijkt me dit verpicht voor de syntax, en niet verstandig om het niet te doen!
Chris NVT op 20/07/2012 15:14:47

Jan geeft aand dat er geen gebruikersnaam of wachtwoord op de db zit. Echter lijkt me dit verpicht voor de syntax, en niet verstandig om het niet te doen!


Dan zou het zo worden?
$conn=odbc_connect ('{Microsoft Access Driver (*.mdb)};Dbq=C:\Windows\NTDS\test\access_DB.mdb;', '', '');
Klopt ik maak geen gebruik van een gebruikersnaam en wachtwoord

Wanneer ik:
$conn=odbc_connect ('{Microsoft Access Driver (*.mdb)};Dbq=C:\Windows\NTDS\test\access_DB.mdb;', '', '');
doe krijg ik de volgende foutmelding:

Warning: odbc_connect(): SQL error: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in C:\Program Files\test\test.php on line 24 Connection Failed:


Reageren