Door
Jan Volker
op 13-07-2012 16:04
gewijzigd op 13-07-2012 16:04
6.346 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.
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>";
?>
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!
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: