php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.03.2007, 20:29  
Erfahrener Benutzer
 
Registriert seit: 03.07.2003
Beiträge: 292
PHP-Kenntnisse:
Fortgeschritten
dh1sbg
Standard adodb und letztes (akutelles) Insert

Hallo!

Umgebung: winxp, PHP 5 und adodb (auf eine Access Datenbank, 2003), eine Tabelle mit ID als AutoWert:

Wie kann ich die ID des letzten Inserts mit ADODB (!) ermitteln? Meinen Recherchen zufolge kann ADODB . Ich suche so was wie mysql_insert_id, allerdings für ADODB.

laut : http://forum.de.selfhtml.org/archiv/2007/2/t145409/#m943684":

ADODB unterstützt auch $connection->Affected_Rows() (gibt die Anzahl von Datensätzen zurück welche vom letztten "update" oder "delete" betroffen wurden) und $recordset->Insert_ID() (gibt die letzte "autoincrement" Zahl welche bei einer "insert"-Anweisung erzeugt wurde zurück). Aber seien Sie gewarnt, das nicht alle Datenbanken diese beiden Funktionen unterstützen."

Workaround: Ich erstelle eine Hilfs -Tabelle mit einer Anzahl ID's, die höher sind als die höchste ID meiner Hauttabelle. Wenn ich ein Insert machen will, werde ich aus der Haupttabelle mir eine ID lesen, die sogleich löschen. Dann, zur Sicherheit in der Haupttabelle nachschauen, ob diese ID schon existiert, wenn nicht, kann ich diese ID für den Datensatz der Haupttabelle nehmen.

Leider kann ich die Haupttabelle nicht sperren.

Gibt es einen besseren Algorithmus als den oben beschriebenen?

Grüße
Bruno
dh1sbg ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.03.2007, 18:24  
Erfahrener Benutzer
 
Registriert seit: 03.07.2003
Beiträge: 292
PHP-Kenntnisse:
Fortgeschritten
dh1sbg
Standard

Hallo
in http://www.phpfreaks.com/tutorials/110/2.php ist ein Beispiel für Insert_ID()

Als Datenbank habe ich eine Access DB, die ich so anspreche

PHP-Code:
if (!$conn = new COM("ADODB.Connection"))
  exit(
"Unable to create an ADODB connection
"
);
  
$strConn "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" realpath("C:\test\test.mdb"); 
ich habe diesen Code

PHP-Code:
  $record["Objekt"]="test";

  echo 
"<pre>";print_r($record);echo"</pre>";
  
$insertSQL"INSERT INTO tblDebitor (".implode(",",(array_keys($record))).") values('".
                                       
implode("','",$record)."')";
  echo 
"$insertSQL
"
;
  
$sql $conn->execute($insertSQL);
  if(!
$sql){
     echo 
"Error performing query: ".$conn->ErrorMsg();
  } else {
    echo 
"Query success! The new row has an id of: 

"
;
    try{
      
$conn->Insert_Id();
    } catch (
exception $e) {
        
var_dump($e);
        echo 
"<hr>";foreach($_GET as $key=>$value){echo "
$key $value"
;}echo"
$strSql<hr>"
;
    }

  } 
Dabei bekomme ich die Fehlermeldung
  • Array
    (
    [Objekt] => test
    )

    INSERT INTO tblDebitor (Objekt) values('test')
    Query success! The new row has an id of:

    object(com_exception)#5 (6) { ["messagerotected"]=> string(169) "Source: ADODB.Connection
    Description: Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitsbereiches oder sind miteinander unvereinbar." ["stringrivate"]=> string(0) "" ["coderotected"]=> int(-2147352567) ["filerotected"]=> string(5 "C:\apachefriends\xampp\htdocs\test\test.php" ["linerotected"]=> int(34 ["tracerivate"]=> array(1) { [0]=> array(6) { ["file"]=> string(5 "C:\apachefriends\xampp\htdocs\test\test.php" ["line"]=> int(34 ["function"]=> string(9) "Insert_Id" ["class"]=> string(3) "com" ["type"]=> string(2) "->" ["args"]=> array(0) { } } } }

Die Tabelle existiert und hat ein Feld, 'id', das auf autowert, LongInteger gesetzt ist

Was mache ich falsch?
dh1sbg ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Mysql Insert Select + Concat Hu5eL Datenbanken 14 10.06.2008 10:39
Self Join / Nested Join ? Ich hab ne Blockade... iangillan Datenbanken 11 06.01.2008 21:37
Pathfinding Algorithmus optimieren? (Algorith. von Dijkstra) Martin13 PHP Tipps 2007 19 04.09.2007 19:20
Verständnisprobleme bei Utf8 > Character Set > Collate erna Datenbanken 4 20.03.2007 14:08
Insert via ADO dh1sbg PHP-Fortgeschrittene 2 20.12.2006 11:43
Differenz zwischen 2 Zahlen duderino PHP Tipps 2006 19 10.08.2006 22:12
INSERT syntax - gibt es die möglichkeit VALUES und SELECT zu PermanetMarker Datenbanken 8 06.07.2006 12:48
PRoblem mit Cookie bei PHPbb-Board PHP Tipps 2007 8 12.12.2005 20:56
PHP-Fehlermeldung, weiss nicht mehr weiter PHP Tipps 2005-2 12 21.09.2005 12:56
mysql dump einspielen (ohne phpmyadmin) PHP Tipps 2005-2 6 18.06.2005 21:50
[Erledigt] fehler den ich noch nie gesehen habe Datenbanken 7 09.06.2005 14:29
dynamisches MENÜ aus db lesen.probleme mit SUBid !! PHP Tipps 2005 26 24.03.2005 18:53
dem verzweifeln nahe PHP Tipps 2004 26 24.10.2004 17:28
Zeile einfach überspringen bei Unique-Verletzung tapferesschneiderlein Datenbanken 6 03.09.2004 14:29
[Erledigt] HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
adodb php mysql_insert_id, adodb insert success, mysql_insert_id() adodb, xampp adodb, php adodb zwei connections, adodb php testen ob insert funktioniert hat, mysql_insert_id adodb, adodb mysql_insert_id(), adodb insert id, adodb 2 inserts, php mysql adodb insert select problem, adodb xampp, php adodb insert success, adodb.connection inserted id, adodb mysql_insert_id, adodb php error, xampp php adodb, xampp adodb connection string, adodb insert_id mysql, wofür ist adodb im xamp

Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.