mysql_fetch_array(): supplied argument is not a valid MyS...

Alles, was PHP betrifft, kann hier besprochen werden.

mysql_fetch_array(): supplied argument is not a valid MyS...

Postby triple89 » 25. March 2008 21:52

Hallo zusammen

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data/apache/users/kilu.de/triple89/www/admin/artist.php on line 15


Diese Fehlermeldung kriege ich bei folgendem Code:

Code: Select all
$sql = "INSERT INTO `artist` (`ID`, `Name`, `Vorname`) VALUES (NULL, '".$_POST['nachname']."', '".$_POST['vorname']."')";      

$result = mysql_query ($sql, $connection);

mysql_fetch_array($result);



Das lustige ist einfach, dass das INSERT trotzdem genau so funktioniert, wie ich das wollte!!!

Kann mir jemand helfen? Die Website sollte keine solche "Macken" haben.

Habe schon einmal ein bisschen gegooglet, aber habe keine funktionierende lösung gefunden. habe es mit mysql_error() oder so versucht, habs jedoch nicht geschafft.

Ach ja, Datenbankverbindung (DatabaseName, User, Password, Table) sind alle ok, und wie gesagt, eigentlich hat die funktion den gewünschten effekt.

Kann mir bitte jemand helfen? Danke viel mals.

Gruss triple
triple89
 
Posts: 1
Joined: 25. March 2008 21:43

Postby Xardas der Dunkle » 25. March 2008 22:03

Erstmal sollte man NIEMALS Usereingaben ungeprüft in die DB speichern. http://de3.php.net/manual/de/function.m ... string.php ist da bereits eine Abhilfe.

Code: Select all
$sql = "INSERT INTO `artist` (`ID`, `Name`, `Vorname`) VALUES (NULL, '" . mysql_real_escape_string($_POST['nachname']) . "', '" . mysql_real_escape_string($_POST['vorname']) . "')";


Zu deinem Fehler, wieso rufst du bitte mysql_fetch_array($result) bei einem Eintrag in die Datenbank auf? Bist du dier überhaupt im Klaren was die Funktion macht?^^ http://de3.php.net/manual/de/function.m ... -array.php

Sie ließt die Daten aus die du mit dem Query eingelesen hast. Und die gibt es bei einem Eintrag nunmal nicht.
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Re: mysql_fetch_array(): supplied argument is not a valid My

Postby logout » 26. March 2008 17:11

triple89 wrote:
Code: Select all
$sql = "INSERT INTO `artist` (`ID`, `Name`, `Vorname`) VALUES (NULL, '".$_POST['nachname']."', '".$_POST['vorname']."')";      

$result = mysql_query ($sql, $connection);

mysql_fetch_array($result);

Ich frage mich was du mit dem mysql_fetch_array($result) erreichen willst!?!
1. Die Funktion gibt dir die Ergebnisse als Array zurück, was aber (denke mal) nur mit SELECT funktioniert
ALSO:
Code: Select all
$sql = "SELECT * FROM `artist` [weitere Parameter]";
$result = mysql_query($sql);
$ergebnisse = mysql_fech_array($result)


Ich würde das z.B. so machen (für deins jetzt):
Code: Select all
$sql = "INSERT INTO `artist` (`ID`, `Name`, `Vorname`) VALUES (NULL, '".$_POST['nachname']."', '".$_POST['vorname']."')";     

$result = mysql_query ($sql, $connection);

//Prüfen, ob die Daten übernommen wurden und ALLE auflisten

$sql = "SELECT * FROM `artist`";
$result = mysql_query($sql, $connection);
if ($result)
{
while ($ergebnisse = mysql_fetch_array($result))
{
echo $ergebnisse['id']." - ".$ergebnisse['vorname']." - ".$ergebnisse['nachname']."<br>".
}
}

Der Name und Vorname wird in die DB eingetragen und danach werden ALLE Datensätze aufgelistet.
Der Grund, weshalb das mysql_fetch_array(...) nicht bei funktioniert hat, ist ganz einfach: Der konnte nichts mit dem $result anfangen (war ja ein INSERT-Befehl)

PS:
Und das mit dem mysql_error() geht so:
Code: Select all
$sql = "INSERT INTO `artist` (`ID`, `Name`, `Vorname`) VALUES (NULL, '".$_POST['nachname']."', '".$_POST['vorname']."')";     

$result = mysql_query ($sql, $connection) or die(mysql_error());
Last edited by logout on 30. March 2008 21:49, edited 1 time in total.
logout
 
Posts: 34
Joined: 01. January 2008 04:13

Postby Xardas der Dunkle » 26. March 2008 17:16

:roll: Jetzt machst du die selben Fehler wie er :P.

Ich zitiere mich nur ungern, aber^^:
Xardas der Dunkle wrote:Erstmal sollte man NIEMALS Usereingaben ungeprüft in die DB speichern. http://de3.php.net/manual/de/function.m ... string.php ist da bereits eine Abhilfe.

Code: Select all
$sql = "INSERT INTO `artist` (`ID`, `Name`, `Vorname`) VALUES (NULL, '" . mysql_real_escape_string($_POST['nachname']) . "', '" . mysql_real_escape_string($_POST['vorname']) . "')";


Und unten bei dem mysql_error hast du unsinnigerweise auch ein mysql_fetch_array ....

Ich kann dir auch genau sagen wieso das nicht geht ..., mysql_query gibt bei INSERT, UPDATE, REPLACE etc. ein boolean zurück ansatt eine ressource so wie es zB. bei SELECT der Fall ist ;) und da mysql_fetch_array nunmal eine ressource erwartet ...
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby logout » 30. March 2008 21:50

Habs korrigiert, ich habe lediglich seinen Code genommen und um mysql_error() erweitert ;)
logout
 
Posts: 34
Joined: 01. January 2008 04:13


Return to PHP

Who is online

Users browsing this forum: No registered users and 1 guest