von PHP Script kein INSERT möglich

Alles, was PHP betrifft, kann hier besprochen werden.

von PHP Script kein INSERT möglich

Postby TomSz » 04. August 2006 15:29

Hallo, allerseits!
Seit 2 Tagen habe ich das Problem, das INSERT-Befehle, die ich über PHP-Seiten aufrufe, nicht mehr in der Datenbank ausgeführt werden. Zuerst dachte ich, ich hätte Fehler in der Syntax oder den Datentypen, jedoch habe ich jetzt einfach mal die Insert-Befehle auf der Webseite Anzeigen laßen, diese per copy/paste in das SQL-Eingabefenser von PHP-MyAdmin einkopiert, dort wird der Befehl ausgeführt. Habe also definitiv nichts falsch hineingeschrieben.
Woran kann dies denn nu wieder liegen?
Hilfe wäre nett.
Arbeite mit WinXP Prof SP2
XAMPP 1.5.0-pl1
Editor: Phase 5.3
Gruß
Tom
TomSz
 
Posts: 3
Joined: 04. August 2006 14:44
Location: Stuttgart

Postby Wiedmann » 04. August 2006 17:20

Woher sollen wir das wissen ;-)

Aktiviere ein gescheites error_reporting und frag nach MySQL-Funktionen den evtl. aufgetretenen MySQL Fehler ab. PHP, bzw. MySQL, wird dir dann sagen woran es liegt.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby TomSz » 05. August 2006 10:47

Sorry, ich dachte, bei der Erklärung könnte ich mir das ersparen. Aber logisch, kann ja auch ein Tippfehler sein.
Also der Quelltext der php-Datei:
Code: Select all
$dataarray=file($data);
foreach($dataarray as $num => $line)
{
$tag=explode(';',$line);
$gameday=$num+1;

$ausgabe.="<tr><th colspan='9' align='center'>Spieltag $gameday $zusatz</th></tr><tr><td>Datum </td><td>Zeit </td><td>Heimmannschaft</td><td></td><td></td><td>Gastmannschaft</td><td>Ergebnis </td><td>Punkte Heim </td><td>Punkte Gast </td></tr>";
$i=1;
foreach($tag as $spieltag)
{
$daten=explode('#',$spieltag);
$spieltag=$gameday;

$sd=explode('.',$daten[0]);
$spieldatum='20'.$sd[2].'-'.$sd[1].'-'.$sd[0];
$spielzeit=$daten[1];
$spielheimname=$daten[2];
$spielgastname=$daten[3];
$spielheimergebnis='';
$spielgastergebnisw='';
$spielheimpunkte='';
$spielgastpunkte='';
$entry="INSERT INTO spiele (id,spieltag,spieldatum,spielzeit,spielheimname,spielgastname,spielheimergebnis,spielgastergebnis,spielheimpunkte,spielgastpunkte) VALUES ('', '".$spieltag."', '".$spieldatum."', '".$spielzeit."', '".$spielheimname."', '".$spielgastname."','','','','');";
$eee=mysql_query($entry,$dbv) or die(mysql_error());
$zzz=mysql_num_rows($eee);
$i++;
echo $entry."<br />";
echo $zzz." Zeilen gelesen<br />";


Hier die (verkürzte) Ausgabe


Code: Select all
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Programme\xampp\htdocs\tww\tomswebworld\bundesliga2006\admin\eintragen.php on line 31
INSERT INTO spiele (id,spieltag,spieldatum,spielzeit,spielheimname,spielgastname,spielheimergebnis,spielgastergebnis,spielheimpunkte,spielgastpunkte) VALUES ('', '1', '2006-08-11', '20:45', 'fcb', 'bvb','','','','');
Zeilen gelesen


Die verbindung mache ich über
Code: Select all
$mysqlserver="localhost";
$mysqlusername="meinusername";   
$mysqlpassword="meinpasswort";
$database="datenbankname";      
$dbv=mysql_connect($mysqlserver,$mysqlusername,$mysqlpassword);
$anhang="?=sid";
mysql_select_db($database,$dbv) or die("Keine Verbindung zum Datenbankserver");


Wenn ich also die MySQL-Errors und die Zeilenausgabe weglasse, dann die Ausgabe aus dem Browser in das MySQL-Eingabefenster von phpMyAdmin eingebe, wird die Datenbank gefüllt.
Aus dem PHP-Script nicht. Von der Datenbankverbindung erhalte ich keine Fehlermeldung.

Habe vor 3 Tagen mit dem Programm gearbeitet, hat gefunzt, seit 2 Tagen nicht mehr. Ich habe keine veränderungen an der XAMPP-Konfiguration vorgenommen.

Ich begreife nicht, wo der Fehler liegt.

Weiss dies jemand?

Bin für jeden Tipp dankbar.

Gruß

Tom
TomSz
 
Posts: 3
Joined: 04. August 2006 14:44
Location: Stuttgart

Postby thorsin » 05. August 2006 11:47

die fehlermeldung ist doch eindeutig!
dein INSERT statement ist falsch.
überprüf die namen, ob die spaltenzahl mit der wertezahl übereinstimmt, ob du vielleicht irgendwo NULL übergibtst, wo "NOT NULL" als constraint gesetzt ist....
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby Wiedmann » 05. August 2006 11:53

TomSz wrote:Habe vor 3 Tagen mit dem Programm gearbeitet, hat gefunzt,

Möglich das es gefunzt hat ;-) , funktioniert hat dieses Script aber so noch nie...

a) Wie du siehst, beschwert sich mysql_num_rows() dass in $eee keine Result Resource drin ist.

b) $eee ist die Rückgabe von mysql_query().

c) als Query führst du ein "INSERT INTO" aus.

d) wie du im PHP-Manual gelesen hast, gibt ein "INSERT INTO"-Query gar keine Result Resource zurück. Also kannst du hier gar kein mysql_num_rows() benutzen (das benögt diese ja).

e) Wie du eben auch im Manual lesen kannst, musst du hier mysql_affected_rows() benutzen.
mysql_affected_rows

BTW:
thorsin wrote:dein INSERT statement ist falsch.

Das INSERT statement ist auf jeden Fall gültig. Sonst würde ja das "or die" von mysql_query() zuschlagen.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby thorsin » 05. August 2006 12:54

okok, ich geb ja zu, dass ich keine lust hatte mir den kompletten source anzuschauen, zumal er ja nicht komplett war und die zeilennummerierung fehlt... so is natürlich korrekt ;-)
User avatar
thorsin
 
Posts: 136
Joined: 05. March 2006 20:39

Postby TomSz » 05. August 2006 19:37

Super, jetzt geht das Script wieder.
INSERTS werden gemacht, ebenso die SELECTS.

Ich habe nur das mysql_num_rows beim INSERT herausgenommen.

Evtl. hat wegen diesem das gesamte Script gesponnen?

Verstehe ich zwar nicht, da es auch vorher nicht funktioniert hatte, aber hauptsache, jetzt geht es wieder. Evtl. hatte ich vorher nen Tippfehler irgendwo drin.

Danke, daß Ihr Eure Gehirne wegen mir angetrengt habt.

Alles Gute

Tom
TomSz
 
Posts: 3
Joined: 04. August 2006 14:44
Location: Stuttgart


Return to PHP

Who is online

Users browsing this forum: No registered users and 10 guests