WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   MySQL Fehlermeldung bei neuem Hoster (http://www.wcm.at/forum/showthread.php?t=109025)

row 16.09.2003 16:31

MySQL Fehlermeldung bei neuem Hoster
 
Hi Leute,

nachdem ich meine Seite zu meinem neuen Hoster übersiedelt habe, habe ich neuerdings folgende Fehlermeldung:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/www/web602/html/survey9.php on line 13

In der betreffenden Datei steht folgender Code:
PHP-Code:

line 11:  $abfrage "SELECT ques7 FROM tels WHERE session='$survey_id'";
line 12:  $ergebnis mysql_query($abfrage);
line 13:  $ausgabe mysql_fetch_object($ergebnis);
line 14:  $eingabe=$ausgabe->ques7

Diese Fehlermeldung hatte ich beim vorherigen Hoster nicht *grübel*
Any ideas?

Alex1 16.09.2003 17:43

Die Datenbank und deren Inhalte hast eh auch übersiedelt?

row 16.09.2003 20:44

Ja, habe ich.
Bzw. habe die selbe Tabelle dort auch angelegt. Die Daten werden durch einen Fragebogen von den Usern selber angelegt. Die Daten werden auch angelegt bzw. bis auf die mit der Fehlermeldung richtig ausgelesen bzw. eingetragen.

Ich benutze diese selbe Abfragestruktur sogar auf anderen Seiten (&auch auf der selben Seite um andere Daten der Session auszulesen), wo sie auch problemlos funktioniert. Ein Rätsel!
Es kommt dann einfach:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/www/web602/html/survey9.php on line 25

row 16.09.2003 21:15

@Alex1
P.S: Mir ist gerade aufgefallen dass das Problem auf Seiten auftritt wo ich vorher Daten mit der Zeile unten in die Datenbank reingeschrieben habe:

PHP-Code:

$sql "update tels SET ques8 = '$ques8', ques8_info = '$ques8_info' WHERE session = '$survey_id'  ";
$res=send_sql($db,$sql); 

Muss ich da vielleicht irgendwie die Daten freigeben/MySQL-Verbindung beenden oder sowas???

Alex1 16.09.2003 21:48

Hm...vielleicht kann käptn dir helfen? :)

K@sperl 16.09.2003 22:41

Ich kenn den Befehl 'send_sql' nicht, ich hab updates und inserts immer mit 'mysql_query($sql)' gemacht.
Ist der Datensatz nach dem Update auch wirklich upgedatet?

Gib bei deiner SELECT Abfrage mal die Var. $survey_ID aus

käptn 16.09.2003 22:57

@row

Du solltest $survey_id noch in (Double)Quotes "einzäunen".

PHP-Code:

mysql_query('UPDATE ... WHERE session="'.$survey_id.'"'); 

~

row 17.09.2003 09:33

Sorry, dass hab ich vergessen dazu zu sagen, send_sql ist eine Funktion.
PHP-Code:

function send_sql($db$sql) {
   if (! 
$res=mysql_db_query($db$sql)) {
   echo 
mysql_error();
   exit;
   }
   return 
$res;
 } 


row 17.09.2003 14:19

@käptn
Das "Einzäunen" produziert mir eine Fehlermeldung, dass er die Column nicht kennt - ist jetzt wieder so wie vorher.

Also, ich hab jetzt radikal einfach die Dinger rausgenommen, die nicht funktionierten, weil ich muss diesen Fragbogen jetzt bald fertig kriegen! Jetzt fehlt zwar eine gewisse Interaktivität, aber was will man machen.

Ein Problem bleibt mir noch:
Die Leute sollen die Möglichkeit haben mehrmals einen Fragebogen auszufüllen, an die Session_ID wird dann einfach die Zahl eines Counters angehängt (damit man weiss welche Einträge zusammenhängen). Dass geht jetzt bei dem Provider auch nicht (bei Lycos gings).
Die Fehlermeldung ist: Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/www/web602/html/survey_mult.php:11) in /home/www/web602/html/survey_mult.php on line 24

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/www/web602/html/survey_mult.php:11) in /home/www/web602/html/survey_mult.php on line 2


PHP-Code:

<?php
session_start
();
include(
"funk.php");
include(
"verbind.php");

$survey_id $_SESSION["username"];

//Abfrage wievielte Aktivität/wievielter Durchlauf
$abfrage "SELECT multiaktiv FROM tels WHERE session='$survey_id'";
  
$ergebnis mysql_query($abfrage);
  
$ausgabe mysql_fetch_object($ergebnis);
   
$akt_zaehler=$ausgabe->multiaktiv;
echo 
"
Aktuelle Durchlauf Nummer: $akt_zaehler 
"
;

//Neue sessionID anlegen mit Aktivitäts#
$feld="_a";
$survey_id_neu $survey_id.$feld.$akt_zaehler;

//Alte Session zerstören
session_destroy ();

//Neue Session anlegen auf Basis alter Session
session_start();
$_SESSION["username"] = "$survey_id_neu";
$survey_id $_SESSION["username"];

$sql "insert into tels (session) 
            values ('$survey_id')"
;
$res=send_sql($db,$sql);
?>

Danke für Eure Geduld!

Alex1 17.09.2003 14:38

Du kannst nicht mit Sessions arbeiten, nachdem Du mit "echo" irgendeine Ausgabe an den Browser gesendet hast.

row 17.09.2003 15:15

@Alex1
Okay! Ich habe jetzt alle "echos" entfernt, die Fehlermeldung bleibt aber :(
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/www/web602/html/survey_mult.php on line 11

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/www/web602/html/survey_mult.php:11) in /home/www/web602/html/survey_mult.php on line 24

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/www/web602/html/survey_mult.php:11) in /home/www/web602/html/survey_mult.php on line 24


PHP-Code:

<?php
session_start
();
include(
"funk.php");
include(
"verbind.php");

$survey_id $_SESSION["username"];

//Abfrage wievielte Aktivität/wievielter Durchlauf
line 9$abfrage "SELECT multiaktiv FROM tels WHERE session='$survey_id'";
line 10$ergebnis mysql_query($abfrage);
line 11:  $ausgabe mysql_fetch_object($ergebnis);
line 12:   $akt_zaehler=$ausgabe->multiaktiv;
//echo "
Aktuelle Durchlauf Nummer$akt_zaehler 
";

//Neue sessionID anlegen mit Aktivitäts#
$feld="
_a";
$survey_id_neu = $survey_id.$feld.$akt_zaehler;
//echo "
Neue Session ID vergeben$survey_id_neu";

//Alte Session zerstören
session_destroy ();

//Neue Session anlegen auf Basis alter Session
line 24: session_start();
line 25: $_SESSION["
username"] = "$survey_id_neu";
line 26: $survey_id = $_SESSION["
username"];

$sql = "
insert into tels (session
            
values ('$survey_id')";
$res=send_sql($db,$sql);
?>

Kann das vielleicht damit zusammenhängen weil ich die Leute von einer anderen Seite mit
PHP-Code:

header("Location: http://www.creative-orange.com/survey_mult.php"

auf diese Seite schicke???

dub 17.09.2003 16:44

Warum MySQL einen Fehler macht, kann ich dir leider nicht sagen, komm ich auch nicht drauf.

Aber warum die SESSION da noch immer einen Fehler macht, obwohl du alle ECHOs raus hast, ist klar, denn PHP sagt dir ja, dass MySQL einen Fehler macht, und sendet somit schon BODY. Und das noch bevor du auf die SESSIONs zugreifst.

Wenn du den fehlerhaften SQL-Statment auskommantierst, sollte es klappen.

#Hannes#

PS: Ist "SESSION" viell. ein reserv. Wort in MySQL?

row 17.09.2003 16:59

Heisse Spur
 
@dub
Aha - logisch, die Fehlermeldung an sich ist ja schon ein Output an den Client (wenn auch ungewollt!).

@an alle

Ich denke ich bin jetzt auf der richtigen Spur. Ich erstelle ja am Anfange eine survey_id per md5. Diese wird als
PHP-Code:

$zufall=md5 (uniqid (rand())); // besser, da schwer zu erraten
$_SESSION["username"] = "$zufall";
$survey_id =$_SESSION["username"]; 

eingetragen. Per $_SESSION["username"] kann ich dann über die Session immer auf die MySQL Felder zugreifen (d.h mein $_SESSION["username"] ist der Primary Key der Tabelle).

Jetzt mein Denkfehler: ich dachte ich arbeite hier immer mit "der" Session-Id, darweil ist es ja nur die Variable $_SESSION["username"], die ich soähnlich nannte!!!
Die wirkliche Server Session-ID wird ja anscheinend automatisch angelegt und ist unter session_id(); ein ganz andere.
Und wenn ich dann die Session verändern will und ähnliches arbeite ich immer mit der falschen! Irgendwie haben die dass bei Lycos anders eingestellt und daher ist der Fehler nie aufgefallen.
Ich werd mal jetzt alles kontrollieren und mich dann morgen wieder melden wenn es ausgebessert ist.

!!!Vielen Dank für's Durchschauen an alle!!!

row 18.09.2003 15:52

Hi Leute,

also es ist alles umgebessert und bis jetzt *Holz klopfen* läuft alles stabil, super.
Vielen Dank nochmals für Eure Hilfe!


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag