Alt 22.12.2006, 17:49:21   #1
unregiert
abgemeldet

Reg: 22.04.2006
Beiträge: 453
Standard [PHP/MySQL] mysql_fetch_object(): supplied argument...

Ja, ich habe in die FAQ geschaut, aber dennoch zeigt er mir die Fehlermeldung an. MySQL Datenbank existiert, Funktionen stimmen, aber er zeigt die Fehlermeldung an.

Die Fehlerquelle ist markiert. In dosql wird überprüft, ob es einen Fehler gibt.

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
  function loadtxt($name)
  {
    
/* search for sid */
    /* FEHLERQUELLE */ 
$result dosql("SELECT `pageid`, `name` FROM `cms_page` WHERE `name` = '%s';"$name);
    
$data mysql_fetch_object($result);
    echo 
$data->pageid;
    
/* parent 1 */
  
}
  
/*
    dosql( sql_code ) do a sql command
  */
  
function dosql($queryformat)
  {
    
$queryargs=func_get_args();
    
    
$vars=array();
    for(
$i=1;$i<count($queryargs);$i++)
        
$vars[]=mysql_real_escape_string($queryargs[$i]);
        
    
$querystring=vsprintf($queryformat,$vars);
    return 
mysql_query($querystring) OR pageerror("mysql"mysql_error());
  }
  
  
/*
    pageerror( type , value ) break a page and send a error
  */
  
function pageerror($type "na"$value)
  {
    print 
"<h1>Fehler entdeckt</h1>";
    print 
"Server sandte folgenden Fehlermodus: ".$type."<br />";
    print 
"Fehler wurde generiert um ".date("H:i:s \a\m d.m.Y"time())."<br />";
    print 
"Request hiess folgendermassen: <code>".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']."</code><br />";
    print 
"<br />Fehlercode lautet:<br /><code>".$value."</code>";
    exit;die;
  } 
 
unregiert ist offline   Mit Zitat antworten
Alt 22.12.2006, 17:57:51   #2
LasMiranda
kanz pöhse
Benutzerbild von LasMiranda

ID: 28058
Lose senden

LasMiranda eine Nachricht über ICQ schicken
Reg: 05.05.2006
Beiträge: 3.073
Standard

und was passiert, wenn man hinter die Abfrage ein or die(mysql_error()) macht?
mein Fehler
ich guck weiter
Gruß, Martin
LasMiranda ist offline   Mit Zitat antworten
Alt 22.12.2006, 18:01:48   #3
unregiert
abgemeldet

Reg: 22.04.2006
Beiträge: 453
Standard

Zitat:
Zitat von LasMiranda Beitrag anzeigen
und was passiert, wenn man hinter die Abfrage ein or die(mysql_error()) macht?
Nichts. Der SQL Code passt auch, Syntax-Fehlerfrei
 
unregiert ist offline Threadstarter   Mit Zitat antworten
Alt 22.12.2006, 18:08:33   #4
ice-breaker
return void
Benutzerbild von ice-breaker

ID: 93995
Lose senden

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Die Funktion kenne ich doch^^
hast du dir mal dumpen lassen, was dosql dir zurückgibt? ich kann mir wirklich nur erklären, das er nen false zurückgibt und deshalb die folgende funktion nicht geht. also mal nen var_dump auf den return-wert setzen
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de
ice-breaker ist offline   Mit Zitat antworten
Alt 22.12.2006, 18:10:59   #5
unregiert
abgemeldet

Reg: 22.04.2006
Beiträge: 453
Standard

Zitat:
Zitat von ice-breaker Beitrag anzeigen
Die Funktion kenne ich doch^^
hast du dir mal dumpen lassen, was dosql dir zurückgibt? ich kann mir wirklich nur erklären, das er nen false zurückgibt und deshalb die folgende funktion nicht geht. also mal nen var_dump auf den return-wert setzen
Die Welt ist gemein bool(true)
 
unregiert ist offline Threadstarter   Mit Zitat antworten
Alt 22.12.2006, 18:42:58   #6
strolch00
redraft.de

ID: 155297
Lose senden

strolch00 eine Nachricht über ICQ schicken
Reg: 21.04.2006
Beiträge: 1.684
Standard

Und was passiert wenn du den Query so im phpmyadmin absetzt bzw. mal zum test ein normalen standart Query ohne die funktion. Ich würde mal im phpmyadmin testen. Bzw. schreib ein var_dump auf den umgebauten Query in der funktion dann kannst du sagen der syntax stimmt.
strolch00 ist offline   Mit Zitat antworten
Alt 22.12.2006, 18:43:58   #7
unregiert
abgemeldet

Reg: 22.04.2006
Beiträge: 453
Standard

Zitat:
Zitat von strolch00 Beitrag anzeigen
Und was passiert wenn du den Query so im phpmyadmin absetzt bzw. mal zum test ein normalen standart Query ohne die funktion. Ich würde mal im phpmyadmin testen. Bzw. schreib ein var_dump auf den umgebauten Query in der funktion dann kannst du sagen der syntax stimmt.
Schon gemacht Aber er zeeeigt nix an
 
unregiert ist offline Threadstarter   Mit Zitat antworten
Alt 22.12.2006, 18:48:10   #8
strolch00
redraft.de

ID: 155297
Lose senden

strolch00 eine Nachricht über ICQ schicken
Reg: 21.04.2006
Beiträge: 1.684
Standard

Hö wie meinst du das er zeigt nix an? Was genau phpmyadmin oder die funktion den umgebauten Query?

Was soll denn das ; im Query? Das gehört da nicht hin siehe hier dort steht wie man die funktion nutzt.

Geändert von theHacker (22.12.2006 um 19:04:01 Uhr) Grund: 2 Posts merged
strolch00 ist offline   Mit Zitat antworten
Alt 22.12.2006, 19:09:18   #9
theHacker
sieht vor lauter Ads
den Content nicht mehr
Benutzerbild von theHacker

ID: 69505
Lose senden

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 22.689
Standard

Am Semikolon in der Query dürfte es nicht liegen, aber entfern es trotzdem mal.

Ich fass zusammen:
- mysql_query() liefert true
- trotzdem wird der Fehler angezeigt
?

Was mir nicht gefällt, also wo ich mir unsicher wäre, is die OR-Konstruktion
Probiers mal so:
PHP-Code:
1:
2:
3:
4:
5:
// return mysql_query($querystring) OR pageerror("mysql", mysql_error());
if(mysql_query($querystring))
  return 
true;
else
  
pageerror("mysql"mysql_error()); 
theHacker ist offline   Mit Zitat antworten
Alt 22.12.2006, 19:33:16   #10
strolch00
redraft.de

ID: 155297
Lose senden

strolch00 eine Nachricht über ICQ schicken
Reg: 21.04.2006
Beiträge: 1.684
Standard

Hast Rechts habs grad getestet.

in der Funktion am ende anstatt dem or Statement
PHP-Code:
1:
2:
3:
4:
    if($res mysql_query($querystring))
      return 
$res;
    else
      return 
mysql_error(); 
bringt das ergebnis. An dem ; lag es nicht.

Ps danke fürs zusammenlegen, muss ich dir jetzt nen cent überweisen?
strolch00 ist offline   Mit Zitat antworten
Alt 22.12.2006, 19:36:19   #11
ice-breaker
return void
Benutzerbild von ice-breaker

ID: 93995
Lose senden

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

Zitat:
Zitat von theHacker Beitrag anzeigen
Was mir nicht gefällt, also wo ich mir unsicher wäre, is die OR-Konstruktion
das ganze konstrukt liefert doch true zurück, nur kann ich mir das net vorstellen

Edit: habe den source mal getestet, klar das das net geht^^ die Funktion loadtxt bekommt von der funktion dosql bool(true) aber sollte er net ne ressource bekommen?
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de
ice-breaker ist offline   Mit Zitat antworten
Alt 22.12.2006, 19:39:45   #12
LasMiranda
kanz pöhse
Benutzerbild von LasMiranda

ID: 28058
Lose senden

LasMiranda eine Nachricht über ICQ schicken
Reg: 05.05.2006
Beiträge: 3.073
Standard

ich würde das ja so machen:

PHP-Code:
1:
return (mysql_query($querystring)?mysql_query($querystring):pageerror("mysql"mysql_error())); 
bzw. hätte ich den Abbruch schon innerhalb der Funktion gemacht
Gruß, Martin
LasMiranda ist offline   Mit Zitat antworten
Alt 22.12.2006, 19:41:46   #13
ice-breaker
return void
Benutzerbild von ice-breaker

ID: 93995
Lose senden

ice-breaker eine Nachricht über ICQ schicken
Reg: 27.04.2006
Beiträge: 6.271
Standard

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
  function dosql($queryformat)
  {
    
$queryargs=func_get_args();

    
$vars=array();
    for(
$i=1;$i<count($queryargs);$i++)
        
$vars[]=mysql_real_escape_string($queryargs[$i]);

    
$querystring=vsprintf($queryformat,$vars);

    return(
is_resource($res=mysql_query($querystring))?$res:pageerror("mysql"mysql_error()));
  } 
getestet und funzt nun

@LasMiranda: sehr ineffizent 2 mal den Query auszuführen oder?
"Die Wahrheit entgeht dem, der nicht mit beiden Augen sieht." -Orici

www.internet-dsl-flatrate.de
ice-breaker ist offline   Mit Zitat antworten
Alt 23.12.2006, 00:11:47   #14
unregiert
abgemeldet

Reg: 22.04.2006
Beiträge: 453
Standard

Verknüpft mit dem Thread, gibt es eine weitere Fehlerquelle:
Mein System, so wie ich es gerne hätte, soll mit einer Funktion funktionieren, die rekursiv ist. Ich möchte mit dieser Funktion Seiten generieren lassen, dessen Elemente (h1, h2, h3, Text) in einer Tabelle stehen. Aber leider will das Teil nicht laufen - Sprich: Die Ordnungsfunktion stimmt nicht

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
<?php
  
/* global.php */
  
  /* inkludiere die notwendigen dateien */
  
require('smarty/Smarty.class.php');
  require(
'config.php');
  require(
'init.php');
  require(
'menu.php');
  
  
/* 
    init function load text
    used for load txt from db and do
    this in html
  */
  
function loadtxt($name)
  {
    
/* search for sid */
    
$result dosql("SELECT `pageid`, `name` FROM `cms_page` WHERE `name` = '%s';"$name);
    
$data mysql_fetch_object($result);
    
/* parent 1 */
    
$return '';
    return 
getparents(0TRUE$data->pageid);
  }
  
  
/* 
    getparrents( value_id ) can return you
    the content of a page or a value
  */
  
function getparents($id$first_during FALSE$pageid)
  {
    global 
$return;
    if(
$first_during AND $pageid != "")
    {
      
$result dosql("SELECT `value`, `type`, `id` FROM `values` WHERE `pageid` = %d ORDER BY `order`;"$pageid);
    } else
    {
      
$result dosql("SELECT `value`, `type`, `id` FROM `values` WHERE `parent` = %d AND `pageid` = %d ORDER BY `order`;",  $id$pageid);
    }
    
//unset($pageid);
    //unset($id);
    
while($data mysql_fetch_object($result))
    {
      switch(
$data->type)
      {
        case 
"h1"$return .= "<h1>".$data->value."</h1>"; break;
        case 
"h2"$return .= "<h2>".$data->value."</h2>"; break;
        case 
"h3"$return .= "<h3>".$data->value."</h3>"; break;
        case 
"text"$return .= $data->value; break;
        default: 
$return .= "<div class=\"".$data->type."\">".$data->value."</div>"; break;
      }
      
getparents($data->idFALSE0);
    }
    return 
$return;
  }
  
  
/*
    dosql( sql_code ) do a sql command
  */
  
function dosql($queryformat)
  {
    
$queryargs=func_get_args();

    
$vars=array();
    for(
$i=1;$i<count($queryargs);$i++)
        
$vars[]=mysql_real_escape_string($queryargs[$i]);

    
$querystring=vsprintf($queryformat,$vars);
    return(
is_resource($res=mysql_query($querystring))?$res:pageerror("mysql"mysql_error()));
  } 
  
  
/*
    pageerror( type , value ) break a page and send a error
  */
  
function pageerror($type "na"$value)
  {
    print 
"<h1>Fehler entdeckt</h1>";
    print 
"Server sandte folgenden Fehlermodus: ".$type."<br />";
    print 
"Fehler wurde generiert um ".date("H:i:s \a\m d.m.Y"time())."<br />";
    print 
"Request hiess folgendermassen: <code>".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']."</code><br />";
    print 
"<br />Fehlercode lautet:<br /><code>".$value."</code>";
    exit;die;
  }
  

?>
 
unregiert ist offline Threadstarter   Mit Zitat antworten
Alt 23.12.2006, 01:50:40   #15
strolch00
redraft.de

ID: 155297
Lose senden

strolch00 eine Nachricht über ICQ schicken
Reg: 21.04.2006
Beiträge: 1.684
Standard

stimmt das ??
PHP-Code:
1:
ORDER BY `order
hast du wirklich so eine Spalte? Oder habe ich was falsch verstanden und du meinst du Switch?

*edit
Wie soll es denn geordnet sein, und was bekommst du jetzt?
strolch00 ist offline   Mit Zitat antworten
Antwort

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[JavaScript] Übergabe eines HTML-Elements als Argument glowhand Programmierung 6 24.10.2007 10:58:53
mysql_fetch_array(): supplied argument is not a valid MySQL result resource? maxXx Scripts & Software 29 16.06.2007 14:07:08
auf beliebiges object aus mysql_fetch_object zugreifen smrt Programmierung 1 08.07.2006 22:34:25
[mysql/localhost] Mein MySql auf meinem PC macht Probleme 27o8 Sonstiges 4 01.07.2006 15:59:00
[PHP/MySQL] supplied argument is not a valid MySQL result resource theHacker FAQ und Archiv 0 29.04.2006 15:57:29


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00:42 Uhr.