| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

25-05-2009, 05:03
|
|
thx-sound
Registrierter Benutzer
|
|
Registriert seit: May 2009
Ort: Stuhr
Beiträge: 29
|
|
mysql Ausgabe problem, supplied argument is not a valid MySQL result
Hi,
irgendwie will der mir die Daten nicht ausgeben 
(dbhost,user und pw habe ich hier gelöscht)
Das Script wird mit mysqltest.php?userid=821 (für user Nr. 821) aufgerufen.Als erster wert ist userid defeniert, welcher nicht mit ausgegeben werden soll.
Fehlermeldung beim aufruf:
Zitat:
|
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/www/web191/html/mysqltest.php on line 6
|
Und wenn ich den mysql_fetch_array nehme (sowie an entsprechender stelle ausgabe umändere) , kommt dass gleiche nur mit dem Befehl.
Habe das script aus einem tutorial raus kopiert und dann eben die tabellen/feldernamen usw. abgeändert und ein WHERE dazu gemacht wie es in einen anderen tutorial stand.
PHP-Code:
<?php
$dbconnect=mysql_connect("SERVERADRESSE","USERNAME","PASSWORT"); $sql_befehl="SELECT `username`,`positive`,`neutrale`,`negative` FROM `bewertungen` WHERE id=`$userid`"; //ohne WHERE sind das ALLE Datensätze $ergebnis=mysql_query($sql_befehl,$dbconnect); while($satz = mysql_fetch_row($ergebnis)) { echo "Username: ".$satz['1']; //bei mysql_fetch_array wäre das $satz['username'] echo "Positive: ".$satz['2']; //bei mysql_fetch_array wäre das $satz['positive'] echo "Neutrale: ".$satz['3']; //bei mysql_fetch_array wäre das $satz['neutrale'] echo "Negative: ".$satz['4']; //bei mysql_fetch_array wäre das $satz['negative'] } ?>
Im MySql Table "bewertungen" gibt es:
userid,username,positive,neutrale,negative
Davon ist userid als PRIMARY KEY .
Ich habe allerdings 4 mysqls (usr_web191_1, usr_web191_2. usr_web191_3, usr_web191_4) von maximal 10 möglich auf meinem webspace.
Die Daten sind in usr_web191_2
Aber login per phpmyadmin geht nur über "web191".
Ich weiß nun nicht ob und wie ich "usr_web191_2" da noch mit einsetzen muss oder ob der WHERE reicht.
Was ich schon am anfang komisch fand, ist der Fehlende ; in der mysql_fetch_row zeile.
Aber so war es im tutorial.
Wenn ich diesen setze, wird der normale Text ( username: , positive: usw ) ohne den ausgabewert ausgegeben, vorweg aber der gleiche fehler wie oben.
Also klappt die abfrage nicht.
Oder soll ich es mit mysql_fetch_field() versuchen?
Daten zum Server:
Apache-Version: 2.2
Php-Version: 5.2.4
MySQL-Version: 5.0.51a
Die gleiche Fehlerausgabe hatte auch ein anderer user der es hier im jahre 2003 geschrieben hat - und nacher keine weitere antwort mehr bekommen hat.
Auf den Server wo ich bin gab es vor einigen monaten ebenfalls ein hacker angriff, wodurch mindestens sämtliche files mit "index" gelöscht wurden....
Hoffe das ihr mir noch helfen könnt.
Geändert von thx-sound (26-05-2009 um 19:15 Uhr)
Grund: anderer fehler
|

25-05-2009, 07:45
|
|
krel
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
|
|
PHP-Code:
$ergebnis=mysql_query($sql_befehl,$dbconnect);
daraus solltest du mal ein
PHP-Code:
$ergebnis=mysql_query($sql_befehl,$dbconnect) OR die(mysql_error());
machen, damit du siehst ob beim absender der Query auch funktioniert hat. supllied argument is not valid MYSQL result ist meist ein anzeichen dafür
|

25-05-2009, 09:02
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

25-05-2009, 09:04
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
1. http://www.php-resource.de/forum/sql...problemen.html
2. Du benutzt beim WHERE die falschen Anführungszeichen. ` funktioniert NUR zum Escapen von Spaltennamen. Für Strings benutzt man " oder ', heißt WHERE user_id = "$user_id".
Besser noch wäre: Du erkennst, dass $user_id auf jeden Fall ein integer werden muss, welchen man wiederum nicht escapen muss, und schreibst dann
PHP-Code:
$user_id = intval($user_id)
$sql = "...WHERE user_id = " . $user;
dann muss MySQL nämlich nicht den Integer-Wert erst als String einlesen und dann zurück zu int konvertieren, obwohl du sicher weißt, dass es ja auf jeden Fall ein integer sein muss.
|

25-05-2009, 13:48
|
|
thx-sound
Registrierter Benutzer
|
|
Registriert seit: May 2009
Ort: Stuhr
Beiträge: 29
|
|
Zitat:
Zitat von ghostgambler
1. http://www.php-resource.de/forum/sql...problemen.html
2. Du benutzt beim WHERE die falschen Anführungszeichen. ` funktioniert NUR zum Escapen von Spaltennamen. Für Strings benutzt man " oder ', heißt WHERE user_id = "$user_id".
Besser noch wäre: Du erkennst, dass $user_id auf jeden Fall ein integer werden muss, welchen man wiederum nicht escapen muss, und schreibst dann
PHP-Code:
$user_id = intval($user_id) $sql = "...WHERE user_id = " . $user;
dann muss MySQL nämlich nicht den Integer-Wert erst als String einlesen und dann zurück zu int konvertieren, obwohl du sicher weißt, dass es ja auf jeden Fall ein integer sein muss.
|
Hi,
PHP-Code:
$user_id = intval($user_id) $sql = "...WHERE user_id = " . $user;
könte es sein das du da was verdreht hast (abgesehen vom fehlenden ; in der user_id zeile.
Der wert "user" wird an das script übergeben.
Die Spalte wo es in der sql "bewertungen" heißt "userid".
Dort soll dann aus der Zeile mit dem übergebenen Wert "user" die Daten abgerufen werden
So bekomme ich ein "no database selectet"
Edit 14:57Uhr:
Ich nehme an der Fehler ist folgender:
Es wird nicht der DBName angegeben. Habe wie oben geschrieben 4 user.
Der Table bewertungen ist in "usr_web191_2"
Hat aber kein extra zugang.
Kann mir jamand die korrekte login form sagen damit es geht?
Geändert von thx-sound (25-05-2009 um 15:02 Uhr)
|

25-05-2009, 15:07
|
|
kuddeldaddeldu
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Beiträge: 437
|
|
Zitat:
Zitat von thx-sound
Edit 14:57Uhr:
Ich nehme an der Fehler ist folgender:
Es wird nicht der DBName angegeben. Habe wie oben geschrieben 4 user.
Der Table bewertungen ist in "usr_web191_2"
Hat aber kein extra zugang.
Kann mir jamand die korrekte login form sagen damit es geht?
|
mysql_select_db
Grundlagen!
|

25-05-2009, 15:45
|
|
thx-sound
Registrierter Benutzer
|
|
Registriert seit: May 2009
Ort: Stuhr
Beiträge: 29
|
|
Hi,
mit dem mysql select habe ich inzwischen auch schon von jemand anders.
Hier mal das fertige script was Daten aus der mysql als mehrfarbiegen text in eine Grafik ausgibt:
PHP-Code:
<?php $bildbreite = 468; $bildhoehe = 17; $texthoehe = imagefontheight($textnr); $textnr = 5; $trenner = " / "; $anfang = " ( "; $ende = " ) "; $leer = " ";
$dbconnect=mysql_connect("MYSQLHOST","MYSQLUSER","MYSQLPASSWORT"); mysql_select_db('MYSQLDATENBANK', $dbconnect); $sql_befehl="SELECT username, positive, neutrale, negative FROM bewertungen WHERE userid = " . $user; $ergebnis=mysql_query($sql_befehl,$dbconnect) OR die(mysql_error()); while($satz = mysql_fetch_array($ergebnis)) { $ausgabe1 =($satz['username']); $ausgabe2 =($satz['positive']); $ausgabe3 =($satz['neutrale']); $ausgabe4 =($satz['negative']); }
$bildgroesse = imagecreate ($bildbreite , $bildhoehe); $textgroesse = imagecreate ($bildbreite , $texthoehe);
$collector2 = "$leer"; $collector3 = "$leer$ausgabe1"; $collector4 = "$leer$ausgabe1$anfang"; $collector5 = "$leer$ausgabe1$anfang$ausgabe2"; $collector6 = "$leer$ausgabe1$anfang$ausgabe2$trenner"; $collector7 = "$leer$ausgabe1$anfang$ausgabe2$trenner$ausgabe3"; $collector8 = "$leer$ausgabe1$anfang$ausgabe2$trenner$ausgabe3$trenner"; $collector9 = "$leer$ausgabe1$anfang$ausgabe2$trenner$ausgabe3$trenner$ausgabe4";
$textp2 = imagefontwidth($textnr) * strlen($collector2); $textp3 = imagefontwidth($textnr) * strlen($collector3); $textp4 = imagefontwidth($textnr) * strlen($collector4); $textp5 = imagefontwidth($textnr) * strlen($collector5); $textp6 = imagefontwidth($textnr) * strlen($collector6); $textp7 = imagefontwidth($textnr) * strlen($collector7); $textp8 = imagefontwidth($textnr) * strlen($collector8); $textp9 = imagefontwidth($textnr) * strlen($collector9);
$hintergrund_farbe = imagecolorallocate ($bildgroesse, 222, 222, 222); $text_farbe1 = imagecolorallocate ($bildgroesse, 0, 0, 0); $text_farbe2 = imagecolorallocate ($bildgroesse, 0, 0, 0); $text_farbe3 = imagecolorallocate ($bildgroesse, 0, 0, 0); $text_farbe4 = imagecolorallocate ($bildgroesse, 46, 139, 87); $text_farbe5 = imagecolorallocate ($bildgroesse, 0, 0, 0); $text_farbe6 = imagecolorallocate ($bildgroesse, 0, 0, 255); $text_farbe7 = imagecolorallocate ($bildgroesse, 0, 0, 0); $text_farbe8 = imagecolorallocate ($bildgroesse, 255, 0, 0); $text_farbe9 = imagecolorallocate ($bildgroesse, 0, 0, 0);
header ("Content-type: image/png"); imagefilledrectangle ($bildgroesse, 0, 0, $bildbreite, $bildhoehe, $hintergrund_farbe); imagestring ($bildgroesse, $textnr, $textp2, 1, $ausgabe1, $text_farbe2); imagestring ($bildgroesse, $textnr, $textp3, 1, $anfang, $text_farbe3); imagestring ($bildgroesse, $textnr, $textp4, 1, $ausgabe2, $text_farbe4); imagestring ($bildgroesse, $textnr, $textp5, 1, $trenner, $text_farbe5); imagestring ($bildgroesse, $textnr, $textp6, 1, $ausgabe3, $text_farbe6); imagestring ($bildgroesse, $textnr, $textp7, 1, $trenner, $text_farbe7); imagestring ($bildgroesse, $textnr, $textp8, 1, $ausgabe4, $text_farbe8); imagestring ($bildgroesse, $textnr, $textp9, 1, $ende, $text_farbe9);
imagepng ($bildgroesse); ?>
Bild wird dann abgerufen über:
bewertung.php?user=USERNUMMER
Sind zwar 1-2 alternativen im code drinne, aber es macht ja nix.
Danke an alle die irgendwie mitgeholfen haben jemand der kein php kann sowas zu basteln
Gruss Stefan
|

25-05-2009, 15:58
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
wenn du varaible $user nach wie vor per get überträgst, wirst du trotzdem probleme bekommen. siehe register_globals.
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

25-05-2009, 17:15
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Zitat:
Zitat von thx-sound
Der wert "user" wird an das script übergeben.
Die Spalte wo es in der sql "bewertungen" heißt "userid".
Dort soll dann aus der Zeile mit dem übergebenen Wert "user" die Daten abgerufen werden
|
Ja, ein bisschen Mitdenken ist erlaubt
|

25-05-2009, 18:20
|
|
thx-sound
Registrierter Benutzer
|
|
Registriert seit: May 2009
Ort: Stuhr
Beiträge: 29
|
|
Zitat:
Zitat von Kropff
wenn du varaible $user nach wie vor per get überträgst, wirst du trotzdem probleme bekommen. siehe register_globals.
peter
|
Hi, wenn du mir die fertige neue Zeile bzw Zeilen gibtst, kann ich das gerne machen/versuchen.
Den integer hat mir jemand der mir ein anderer wieder entfernt mit der endgültigen änderung.
Nach seiner änderung ging das script dann wie es sollte.
Hat aber selbst nur etwas erfahrung mit mysql (Programmiert eher Programme).
Gruss Stefan
|

26-05-2009, 18:48
|
|
thx-sound
Registrierter Benutzer
|
|
Registriert seit: May 2009
Ort: Stuhr
Beiträge: 29
|
|
mysql_num_rows(): supplied argument is not a valid MySQL result resource
Hi, nach dem nun mein eigentliches Bild aus mysql Text generierungscript funktioniert, wollte ich noch eine if abfrage machen falls der übergebene "user" Wert nicht existiert oder jemand nur den beispielcode mit "userid" an gibt.
Leider erhalte ich nun:
mysql_num_rows(): supplied argument is not a valid MySQL result resource........
sowie:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/web191/html/bewertungtest7.php:65) in /home/www/web191/html/bewertungtest7.php on line 67 ‰PNG
Zeile 65 ist die if abfrage.
PHP-Code:
mysql_select_db($dbusername, $dbconnect); $sqlcheckabfrage = mysql_query("SELECT * FROM $dbtable WHERE $dbsuchspalte = .$input.");
if (mysql_num_rows($sqlcheckabfrage)==0) { header ("Content-type: image/png"); imagefilledrectangle ($bildgroesse, 0, 0, $bildbreite, $bildhoehe, $hintergrund_farbefehler); imagestring ($bildgroesse, $textnr, $textp2, 1, $keininput, $text_farbe1); imagepng ($bildgroesse); }
else { $sql_befehl="SELECT $ausgabespaltename1, $ausgabespaltename2, $ausgabespaltename3, $ausgabespaltename4 FROM $dbtable WHERE $dbsuchspalte = " . $input; $ergebnis=mysql_query($sql_befehl,$dbconnect) OR die(mysql_error()); while($satz = mysql_fetch_array($ergebnis)) { $ausgabe1 =($satz[$ausgabespaltename1]); $ausgabe2 =($satz[$ausgabespaltename2]); $ausgabe3 =($satz[$ausgabespaltename3]); $ausgabe4 =($satz[$ausgabespaltename4]); } header ("Content-type: image/png"); imagefilledrectangle ($bildgroesse, 0, 0, $bildbreite, $bildhoehe, $hintergrund_farbe); imagestring ($bildgroesse, $textnr, $textp2, 1, $ausgabe1, $text_farbe2); imagestring ($bildgroesse, $textnr, $textp3, 1, $anfang, $text_farbe3); imagestring ($bildgroesse, $textnr, $textp4, 1, $ausgabe2, $text_farbe4); imagestring ($bildgroesse, $textnr, $textp5, 1, $trenner, $text_farbe5); imagestring ($bildgroesse, $textnr, $textp6, 1, $ausgabe3, $text_farbe6); imagestring ($bildgroesse, $textnr, $textp7, 1, $trenner2, $text_farbe7); imagestring ($bildgroesse, $textnr, $textp8, 1, $ausgabe4, $text_farbe8); imagestring ($bildgroesse, $textnr, $textp9, 1, $ende, $text_farbe9);
}
Danach endet das script korrekt.
ausgabespaltename ist auch korrekt...
Geändert von thx-sound (26-05-2009 um 18:52 Uhr)
|

26-05-2009, 18:52
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Bitte mache jetzt nicht für jedes Detailproblem einen neuen Thread auf!
*zusammenführ*
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

26-05-2009, 19:15
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
Zitat:
|
Hi, wenn du mir die fertige neue Zeile bzw Zeilen gibtst, kann ich das gerne machen/versuchen.
|
Das machst du schön selber. Und bitte lies vorher das hier durch. Mui importante!
Und das hier solltest du auch schleunigst lesen. Und beachten!
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

26-05-2009, 19:31
|
|
thx-sound
Registrierter Benutzer
|
|
Registriert seit: May 2009
Ort: Stuhr
Beiträge: 29
|
|
Zitat:
Zitat von Kropff
Und das hier solltest du auch schleunigst lesen. Und beachten!
Peter
|
Hat das überhaupt etwas damit zu tun:
mysql_num_rows(): supplied argument is not a valid MySQL result resource........
Oder ist es einfach nur der falsche mysql befehl um den wert zu ermitteln?
Allein das wäre schon mal eine VERNÜNFTIGE Aussage!
In diesem Fehler ding fehlen auch nach den fehlerhaften Beispielen die korrekten Beispiele wo dann steht: "so müßte es richtig lauten". besonders of wird diese und jene klammer vergessen/übersehen..
Und komme mir hier nicht mit irgend ein "Mui importante!".
Wenn ich für das fertige Script Geld bekommen würde, würde ich ein vernünftigen umfangreichen php kurs machen.
Aber da ich nix dafür bekomme, müssen dei sahcne aus tutorials und EINFACH formulierten beschreibungen reichen.
Dies Forum ist doch dazu da um anderen zu helfen. Also denen zu sagen was genau der Fehler ist wenn die nicht mehr weiter wissen wenn es nicht klappt mit dem was in tutorials ist.
Warscheinlich weißt du sogar was falsch ist und warum das nicht geht.
|

26-05-2009, 19:47
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von thx-sound
Hat das überhaupt etwas damit zu tun:
mysql_num_rows(): supplied argument is not a valid MySQL result resource........
Oder ist es einfach nur der falsche mysql befehl um den wert zu ermitteln?
Allein das wäre schon mal eine VERNÜNFTIGE Aussage!
|
Sich allein schon mal klar zu machen, was die Meldung (übersetzt) aussagt, wäre sehr vernünftig ...
Die Funktion erwartet als Parameter eine gültige MySQL-Ergebnis-Kennung, aber du übergibst ihr keine solche.
Das ist natürlich i.a.R. ein Folgefehler - weil die Funktion, die zuvor eine solche liefern sollte, das nicht ordnungsgemäß machen konnte.
Zitat:
|
In diesem Fehler ding fehlen auch nach den fehlerhaften Beispielen die korrekten Beispiele wo dann steht: "so müßte es richtig lauten". besonders of wird diese und jene klammer vergessen/übersehen..
|
"Besonders oft wird von Anfängern, die sich nicht selber bemühen, wenigstens die Grundlagen der Syntax zu erlernen, erwartet, dass man sie ihnen bei jedem Pups-Problem noch mal einzeln erklärt."
Zitat:
Und komme mir hier nicht mit irgend ein "Mui importante!".
Wenn ich für das fertige Script Geld bekommen würde, würde ich ein vernünftigen umfangreichen php kurs machen.
Aber da ich nix dafür bekomme, müssen dei sahcne aus tutorials und EINFACH formulierten beschreibungen reichen.
|
Das ist "mui importante", weil es eines der absolut grundlegenden Dinge ist, wie PHP mit übergebenen Parametern umgeht.
Also komm du uns nicht mit "kommt mir nicht mit ..." - sondern beschäftige dich damit, verflixt noch mal.
Zitat:
|
Dies Forum ist doch dazu da um anderen zu helfen. Also denen zu sagen was genau der Fehler ist wenn die nicht mehr weiter wissen wenn es nicht klappt mit dem was in tutorials ist.
|
"Mit Tutorials arbeiten" heisst nicht, Code per Copy&Paste übernehmen, zufrieden sein, wenn's "funzt" - und andernfalls sofort anfangen, rumzujammern.
Mit Tutorials arbeiten, heisst dort gesagtes logisch nachvollziehen, und sich selber Gedanken über bestimmte Zusammenhänge machen.
Und vor allem heisst es nicht, sich damit herauszureden, dass man das ganze nicht gegen Bezahlung, sondern nur nebenbei macht - und das man deshalb fordern könnte, dass einem wirklich jeder Furz haarklein erklärt werden müsste und man hier quasi Privatsupport fordern kann.
Wenn du das machen willst, dann beschäftige dich auch damit, so dass du das nötige Grundlagenwissen erlangst, um das gewünschte umsetzen zu können.
Wenn nicht, dann lass' die Finger davon.
Zitat:
|
Warscheinlich weißt du sogar was falsch ist und warum das nicht geht.
|
Netter Versuch. Aber auf so billige Tricks fällt hier vermutlich keiner rein.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|