ODBC: toevoegen van een record
Ik heb volgende script geschreven:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
Bij het lezen van m'n database heb ik geen problemen.
Maar bij het uitvoeren van bovenstaande script (op een record toe te voegen aan de tabel 'users' krijg ik telkens volgende foutmelding:
Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query., SQL state S1000 in SQLExecDirect
Kan iemand mij verder helpen? Hoe kan ik een record toevoegen aan een MSAccess database via de ODBC api?
De tabel 'users' bestaat slecht uit drie velden (rows)?
Ik gebruik IIS als webserver.
En zit er geen id in die tabel?
Nee, er werd geen sleutel aangemaakt. Moet ik er eentje aanmaken voor het identificatieveld usernaam?
$query = "INSERT INTO users (veldnaam, veldnaam, veldnaam) VALUES ('$usrname', '$passwd', '$usrmail')";
Edit: Typo
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Bestaat er een andere functie om een record toe te voegen met odbc?
Heeft het te maken met access-rights? (Aangezien een select-statement geen enkel probleem geeft)
Wat bedoel je met "Edit: Typo" ??
Ik ben verder niet bekend met odbc maar google is hierin je beste vriend. Typo=Typfout.
Laatste keer datik iets dergelijks probeerde kwam het er op neer dat ik een mysql versie voor de webserver gebruikte, en access een aparte versie draaide.
dan heb ik wel een verbindingsvoorbeeldje voor je...
alleen kan ik die morgen pas copy-pasten :)
dus als je wil..
edit:
op mijn stage is de webserver oververhit geraakt op zolder LOL =D...
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
Ik gebruik inderdaad een Access (mdb) database. Dus als je een voorbeeld hebt van hoe je hieraan via phpscript een record kan aan toevoegen, wil ik dat graag ontvangen.
Bij het uitvoeren van jou code krijg ik volgende foutmelding:
SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntax error in query. Incomplete query clause., SQL state S1000 in SQLExecDirect
edit:
Wel weet ik dat er met een ADO-connectie verbinding is gemaakt.. wellicht dat je daar naar kan zoeken
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// Laat alle errors zien
error_reporting(E_ALL);
// Definities benodigt voor ADO-connectie
define('adCmdStoredProc', 4);
define('adOpenStatic', 3);
define('adUseClient', 3);
define('adLockOptimistic', 3);
define('adLockreadOnly', 1);
define('adOpenForwardOnly',0);
// Database initialiseren
$conn = new COM('ADODB.Connection');
$db = 'C:/path to .mdb...';
$conn->CursorType = adOpenForwardOnly;
$conn->CursorLocation = 3;
$conn->LockType = 1;
$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)};Persist Security info=false; DBQ=$db");
?>
// Laat alle errors zien
error_reporting(E_ALL);
// Definities benodigt voor ADO-connectie
define('adCmdStoredProc', 4);
define('adOpenStatic', 3);
define('adUseClient', 3);
define('adLockOptimistic', 3);
define('adLockreadOnly', 1);
define('adOpenForwardOnly',0);
// Database initialiseren
$conn = new COM('ADODB.Connection');
$db = 'C:/path to .mdb...';
$conn->CursorType = adOpenForwardOnly;
$conn->CursorLocation = 3;
$conn->LockType = 1;
$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)};Persist Security info=false; DBQ=$db");
?>
en zo roep je waardes op;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
while (!$rs->EOF)
{
?>
<tr>
<td><?= $rs->Fields['veld1']->Value; ?></td>
<td><?= $rs->Fields['veld2']->Value; ?></td>
<td><?= $rs->Fields['veld3']->Value; ?></td>
<td><?= $rs->Fields['veld4']->Value; ?></td>
</tr>
<?php
$rs->MoveNext();
}
?>
while (!$rs->EOF)
{
?>
<tr>
<td><?= $rs->Fields['veld1']->Value; ?></td>
<td><?= $rs->Fields['veld2']->Value; ?></td>
<td><?= $rs->Fields['veld3']->Value; ?></td>
<td><?= $rs->Fields['veld4']->Value; ?></td>
</tr>
<?php
$rs->MoveNext();
}
?>
Het probleem zit hem in de query. Niet in de verbinding.
Doe eens een echo van $query.
Geef de tabel is een andere naam.
Ik ga de installatie handleiding van Arjan Kapteijn volgen om een server te maken met Apache2, PHP en MySql.
Hopelijk heb ik daarmee meer succes.
ik draai ook de combi IIS, PHP en MySQL en het werkt super..!
Nadeel van Access is dat je limiet hebt met update-query's
Vandaar dat ik ben overgestapt, ik draaide vroeger nl. ook Access
edit:
Wel kan je de tut van MySQL en PHPMyAdmin van Arjan goed gebruiken daarvoor
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'ODBC'@'localhost' (using password: NO)
Daarom trachte ik deze morgen de combinatie Apache2, PHP en MySQL uit te proberen, maar ik het identiek dezelfde foutmelding. (ik heb hiervoor een nieuwe topic gemaakt)
Ik heb ook nog niet zoveel ervaring met al die dingen...
post je script eens
Quote:
(ik heb hiervoor een nieuwe topic gemaakt)
Ok gaan we daar verder :)