paul: mysql_insert_id() zeigt immer "0"??

hallo,

warum bekomme ich bei unten angeführetem script immer den wer "0" ausgegeben?
ich habe die id-spalte auf auto-increment gesetzt. auch wenn ich im sql-statement die id "per hand" dazuschreibe, bekomme ich nur "0" angezeigt.
in der datenbank wird aber die entsprechende id generiert.

es ist also eine neue id da, und die abfrage findet auch unmittelbar nach dem sql-statement statt. was mache ich also falsch??

p

``
<?php
  error_reporting(E_ALL);
 require_once('../inc/db_verbindung.php');

if ($conn)
    {
     if(mysql_select_db("datenbank",$conn))
  {

$sql = 'INSERT INTO personen (vorn, nachname, tel)
           VALUES ('hansi1', 'hinterseer', '1234') ';

echo mysql_insert_id($conn);

if (!mysql_query($sql, $conn)){
      echo mysql_error();}

}else{
echo"fehler";
}

}
?>

  1. Hi,

    warum bekomme ich bei unten angeführetem script immer den wer "0" ausgegeben?

    Weil du ueberhaupt keine Datenbankabfrage machst ... vielleicht?

    $sql = 'INSERT INTO personen (vorn, nachname, tel)
               VALUES ('hansi1', 'hinterseer', '1234') ';

    echo mysql_insert_id($conn);

    Da steht ein String, mehr nicht.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
  2. Hallo und guten Morgen!

    es ist also eine neue id da, und die abfrage findet auch unmittelbar nach dem sql-statement statt. was mache ich also falsch??

    Du übergibst hier

    $sql = 'INSERT INTO personen (vorn, nachname, tel)
               VALUES ('hansi1', 'hinterseer', '1234') ';

      
    nur das Statement als String an eine Variable. Dabei wird noch nichts ausgeführt bzw. in die Datenbank eingetragen.  
      
    
    >      echo mysql\_insert\_id($conn);  
      
    Wenn nichts eingetragen wurde ist die Ausgabe von "0" hier absolut korrekt.  
      
    Das versteh ich jetzt nicht:  
      
    
    > ~~~php
      
    
    >     if (!mysql_query($sql, $conn)){  // Wenn der Query Fehlschlägt  
    >       echo mysql_error();}           // zeige den MySQL-Fehler  
    > }else{                               // sonst (wenn Query ERFOLGREICH)  
    > echo"fehler";                        // Gib "fehler" aus  
    >                                      // Hinweis: HIER muss wahrscheinlich  
    >                                      // dein mysql_insert_id() hin,  
    >                                      // also erst NACH dem query  
    > }  
    > 
    
    

    Was soll das denn? Egal ob der Query erfolgreich ist oder nicht gibst du einen Fehler aus.

    Grüße, Matze

  3. Hello,

    ``

    <?php

    error_reporting(E_ALL);
       require_once('../inc/db_verbindung.php');

    if ($conn)
       {
           if(mysql_select_db("datenbank",$conn))
           {
               $sql = "INSERT INTO personen (vorn, nachname, tel)
                       VALUES ('hansi1', 'hinterseer', '1234') ";

    if (mysql_query($sql, $conn))
               {
                   echo mysql_insert_id($conn);
               }
               else
               {
                   echo mysql_error();
               }
           }
           else
           {
               echo "Kann Datenbank nicht finden";
           }
       }
       else
       {
           echo "Keine Verbindung zum Datenbankserver";
       }

    ?>

    Wenn man ihn sauber im Allman-Style formatiert, kann man den Code sogaer lesen ;-))

    Die SQL-(Fehler)-Meldungen sollte man gleich in ein Logfile des Projektes schicken und nur für das Debugging auch auf dem Monitor auflaufen lassen. Wenn unter Linux entwickelt wird, kann man sich die Ausgabe der Fehler auf der Standardausgabe auch schenken, und das Fehlerfile während der Entwicklung  in einer weiteren Konsole mit "tail -f <fehlerfile>" offen halten.

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hello,

      Wenn man ihn sauber im Allman-Style formatiert, kann man den Code sogaer lesen ;-))

      ACK - leider nimmt die Komplexität deutlich zu.

      MfG
      Rouven

      --
      -------------------
      sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
      Ist Dir langweilig? Willst du Spaß? Willst Du Party? Ganz einfach!!! Schicke eine SMS mit dem Bestellwort "Feuer" an die 112 und innerhalb von 5 Minuten stehen 20 Männer mit lustigen Partyhüten, Sirenen und Partywagen vor deinem Haus!  --  Herkunft unbekannt