PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   im my admin gehts - aus dem form nicht (http://www.selfphp.de/forum/showthread.php?t=19544)

a.buehne 07.06.2008 19:34:59

im my admin gehts - aus dem form nicht
 
Guten Tag allerseits,

ich knacke hier schon ne Weile an nem Problem rum.

Die betroffene Tabelle sieht wie folgt aus:

Code:

mc_standorte
Feld Typ Null Standard Kommentare
f_id mediumint(8) Nein
o_id mediumint(8) Nein
art tinyint(3) Nein 0


Indizes:
Name Typ Kardinalität Feld
f_id UNIQUE 945 f_id o_id


In diese Tabelle soll nun ein neuer Eintrag eingefügt werden:

Code:

INSERT INTO mc_standorte SET f_id="417", o_id="25", art="0"
Füge ich diesen SQL String in die SQL Option in phpMyAdmin passiert exakt was passieren soll.

Da das ganze aber das Ergebnis eines Webforms ist kommt es natürlich vom phpparser:

Code:

$result3 = mysql_query("INSERT INTO mc_standorte SET f_id=\"$f_id\", o_id=\"$o_id\", art=\"$art\"", $dblink);
if (!$result3)
{
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}

Es kommt keine Fehlermeldung - aber ein Eintrag wird auch nicht angelegt.

Dabei macht es auch keinen Unterschied ob ich die \" um die Variablen weglasse oder nicht.

Hat jemand eine Idee?

Löschen aus dem Formular geht übrigens - nur anlegen verweigert es.

Gruß

Andreas

feuervogel 08.06.2008 09:20:46

AW: im my admin gehts - aus dem form nicht
 
dann schau doch mal mit mysql_affected_rows() (http://de3.php.net/manual/de/functio...ected-rows.php) wie viele datensätze erstellt worden.

doppelklick 08.06.2008 10:22:15

AW: im my admin gehts - aus dem form nicht
 
Dieser Code:
PHP-Code:

$result3 mysql_query("INSERT INTO mc_standorte SET f_id=\"$f_id\", o_id=\"$o_id\", art=\"$art\""

funktioniert einwandfrei.

Wie stellst Du die Verbindung zur Datenbank her?

doppelklick

a.buehne 08.06.2008 11:10:28

AW: im my admin gehts - aus dem form nicht
 
Also

mysql_affected_rows liefert Wert 1 als Ergebnis.

Zu dem Codeschnipsel -

Es funktioniert einwandfrei , wenn die Werte $f_id innerhalb der Seite
statisch belegt werden, also z.Bsp. $f_id=417

Die Werte kommen aber aus einem Formular:

Code:

        $f_id=htmlspecialchars($_REQUEST['f_id']);
        $o_id=htmlspecialchars($_REQUEST['o_id']);
        $art=htmlspecialchars($_REQUEST['art']);
        settype($f_id,"integer");
        settype($o_id,"integer");
        settype($art,"integer");

und sonderbarer Weise gehts dann ja nicht - von daher kann ich mir nicht vorstellen das
es an der Art liegt wie eine DB angebunden wird.

Code:

        $dblink=mysql_Connect($host,$login,$pwd);
        $xyz=mysql_select_db($db, $dblink);

Hatte eben nochmal dran rum experimentiert - und habe absolut keine Erklärung
für das was da abgegangen ist:

Ich konnte einmal(!) einen neuen Eintrag anlegen. Ein weiteren (dritten) Eintrag konnte
ich nicht anlegen. Nachdem ich den zweiten gelöscht hatte konnte ich auch da keinen
mehr anlegen.

Gibts irgendein Konsolentool das mir von der mysql Seite her zeigt wer da versucht
was an der DB zu machen?

Gruß

Andreas

feuervogel 08.06.2008 11:22:28

AW: im my admin gehts - aus dem form nicht
 
wenn mysql_affected_rows 1 zurück gibt, werden die daten eingefügt.

doppelklick 08.06.2008 11:29:39

AW: im my admin gehts - aus dem form nicht
 
So hast Du doch schon die Datenbank ausgewählt. Warum dann noch $dblink bei $resut3=(...)?

PHP-Code:

mysql_select_db($dbname,$dblink);
   
$result3 mysql_query("INSERT INTO mc_standorte SET f_id=\"$f_id\", o_id=\"$o_id\", art=\"$art\""

Dadurch dass die f_id "UNIQUE" ist kann die gleiche f_id nur einmal vorkommen. Wenn Du versucht die gleichen Daten ein 2.mal eingegeben werden sie ignoriert.

doppelklick

stb 08.06.2008 11:39:36

AW: im my admin gehts - aus dem form nicht
 
Sollte es nicht so heissen:

INSERT INTO mc_standorte (f_id, o_id, art) VALUES ("417", "25", "0")

doppelklick 08.06.2008 12:05:16

AW: im my admin gehts - aus dem form nicht
 
Der SQL-Query ist so schon in Ordnung. Man kann die Werte direkt zuweisen wie in diesem Beispiel oder erst die Felder angeben und dann die Werte wie Du es machst. Das Ergebnis ist gleich.

doppelklick

a.buehne 08.06.2008 12:27:18

AW: im my admin gehts - aus dem form nicht
 
die beiden Querynoationen liefern in der Tat das gleiche Ergebnis.

Im Fall der Testdatei führten sie zu einem Eintrag, im Fall der Datei die eigentzlich funktionieren sollte liefern sie bei mysql_affected_rows in der Tat eine 1 .....

nur ist der Datensatz nirgends eingetragen ....

und zu den Indizes : f_id/o_id sind als pärchen Unique nicht f_id alleine.

Interessanterweise trägt meine Tesdatei die Werte auch korrekt ein, wenn ich ihr die Daten übergebe - es liegt also wohl auch nicht an der Übergabemethod, resp. Aufbereitung.

Bin ziemlich ratlos.

Werde später mal sukzessive die Zeilen aus der Hauptdatei in die Testdatei übertragen und mal schauen ab welchem Punkt der Insert nicht mehr geht ..... obwohls da eigentlich überhaupt keinen Grund zu gibt....

stb 08.06.2008 12:52:57

AW: im my admin gehts - aus dem form nicht
 
Versuch mal mit
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
die Anzeige von Fehlermeldungen zu erzwingen.
Vieleicht wird eine mögliche Fehlermeldung einfach nur unterdrückt?!

Sonst mit nem Debugger das Script abklappern...

Kann ja sein das der eintrag an anderer Stelle wieder gelöscht wird?!


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:17:17 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.