Door
Jan Volker
op 13-07-2012 16:04
gewijzigd op 13-07-2012 16:04
6.347 views
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.
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
@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)