Beste mensen,

'k Ben na veel ge-google ook nog niet veel verder gekomen en vraag het daarom hier even.

'k Wil via php direct data wegschrijven naar een ms access db. Dus zonder tussenkomst van wat dan ook.

Andersom lukt het al wel, dus data handmatig in ms access invoeren en vervolgens uitlezen via php.

Onderstaande heb ik dus tot op heden. Wie kan mij helpen?


<?

$db = 'C:\\Inetpub\\wwwroot\\mdb.mdb';

$conn = new COM('ADODB.Connection');

$conn->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$db");
//$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db");

$sql = 'SELECT naam, adres, woonplaats
FROM mdb
ORDER BY naam';
$rs = $conn->Execute($sql);

?>

<table>
<tr>
<th>Naam</th>
<th>Adres</th>
<th>Woonplaats</th>
</tr>
<? while (!$rs->EOF): ?>
<tr>
<td><?= $rs->Fields['naam']->Value ?></td>
<td><?= $rs->Fields['adres']->Value ?></td>
<td><?= $rs->Fields['woonplaats']->Value ?></td>
</tr>
<? $rs->MoveNext() ?>
<? endwhile ?>
</table>

<?

$rs->Close();
$conn->Close();

?>
Dit word denk ik toch verder googlen want de meesten doen het wel met mysql!
Wel 'n erg makkelijk antwoord, zo kom ik ook aan 769 posts.... ;)
Ondsersteund die dbdriver die je gebruikt niet ook gewoon sql-queries waarmee je schrijft?

$rs = $db->Execute("INSERT INTO mdb SET naam='iets', adres='onbekend', woonplaats='niet relevant'");
var_dump($rs);

Die laatste regel is om te kijken wat voor een antwoordd die geeft. Vermoedelijk is dat iets in de zin van (boolean) true, maar dat weet ik niet zeker, en deze informatie kan erg handig zijn voor verder gebruik.
James schreef op 30.08.2005 09:51
Wel 'n erg makkelijk antwoord, zo kom ik ook aan 769 posts.... ;)

tja, ik gaf je een tip omdat het niet vaak voorkomt maar ik denk dat de manier van jelmer wel kan, hehe lol(weer onnuttig)
Ik heb 'm er als volgt in gezet:

<?

$db = 'C:\\Inetpub\\wwwroot\\mdb.mdb';

$conn = new COM('ADODB.Connection');

// Two ways to connect. Choose one.
$conn->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$db");
//$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db");

$sql = 'SELECT naam, adres, woonplaats
FROM mdb
ORDER BY naam';
$rs = $db->Execute("INSERT INTO mdb SET naam='iets', adres='onbekend', woonplaats='niet relevant'");
var_dump($rs);

?>

<table>
<tr>
<th>Naam</th>
<th>Adres</th>
<th>Woonplaats</th>
</tr>
<? while (!$rs->EOF): ?>
<tr>
<td><?= $rs->Fields['naam']->Value ?></td>
<td><?= $rs->Fields['adres']->Value ?></td>
<td><?= $rs->Fields['woonplaats']->Value ?></td>
</tr>
<? $rs->MoveNext() ?>
<? endwhile ?>
</table>

<?

$rs->Close();
$conn->Close();

?>

Maar ik krijg deze melding:


Fatal error: Call to a member function Execute() on a non-object in c:\Inetpub\wwwroot\mdb.php on line 14
Foutje van mij:
Moet niet $db->Execute zijn, maar $conn->Execute

Daarbij, zou ik hem niet ipv je andere query doen, maar net ervoor. Dan kan je zien of die gegevens daadwerkelijk zijn toegevoegd.
<?

$db = 'C:\\Inetpub\\wwwroot\\mdb.mdb';

$conn = new COM('ADODB.Connection');

// Two ways to connect. Choose one.
$conn->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$db");
//$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db");

$sql = 'SELECT naam, adres, woonplaats
FROM mdb
ORDER BY naam';
$rs = $conn->Execute("INSERT INTO mdb SET naam='iets', adres='onbekend', woonplaats='niet relevant'");
var_dump($rs);
$rs = $conn->Execute($sql);

?>

<table>
<tr>
<th>Naam</th>
<th>Adres</th>
<th>Woonplaats</th>
</tr>
<? while (!$rs->EOF): ?>
<tr>
<td><?= $rs->Fields['naam']->Value ?></td>
<td><?= $rs->Fields['adres']->Value ?></td>
<td><?= $rs->Fields['woonplaats']->Value ?></td>
</tr>
<? $rs->MoveNext() ?>
<? endwhile ?>
</table>

<?

$rs->Close();
$conn->Close();

?>

Foutmelding:

Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft JET Database Engine
Description: De instructie INSERT bevat een syntaxisfout.' in c:\Inetpub\wwwroot\mdb.php:14 Stack trace: #0 c:\Inetpub\wwwroot\mdb.php(14): com->Execute('INSERT INTO mdb...') #1 {main} thrown in c:\Inetpub\wwwroot\mdb.php on line 14
Kan je een beetje omgaan met MSSQl? Heb je een voorbeeld van hoe ik wel een correcte query kan maken?

*ik zal even zoeken in mijn net voor school ontvangen informaticaboek, wat natuurlijk weer uitgaat van windows ipv de standaard :/ *
Dit zou kunnen werken als query:
INSERT INTO mdb (naam, adres, woonplaat) VALUES ('mijn naam', 'niet beschikbaar', 'leeuwarden')
Dat INSERT-verhaal snapt ie schijnbaar niet.... ?

Reageren