mysql_insert_id() zeigt immer "0"??
paul
- datenbank
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";
}
}
?>
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
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
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
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