Fatal error: Call to undefined method sql_db::sql_query() in C:\Programme\xampp\htdocs\greatbook\common.php on line 82
dann mal wie ich die mysql classe erstelle, und welcher code das verursacht:
[php]
$db = new sql_db($sql_server, $sql_user, $sql_password, $sql_database);
include($greatbook_root_path. ‚includes/constants‘ .$phpEx);
//
// We needn´t the password any longer so delete it
//
unset($sql_password);
//
// fetch config datas
//
$greatbook_config = array();
$sql = 'SELECT * FROM '.CONFIG_TABLE;
$result = $db->sql_query($sql);
[/php]
zeile 82 ist das result.
[SIZE=2]soweit zum php, da ich nun nicht weiter weis was ich alles posten kann, stell ich meine jetzige mysql classe auch mal mit rein:[/SIZE]
[php]
<?PHP
//
// check constant
//
if (!defined('IN_GREATBOOK'))
{
die('Hacking attempt');
}
//
// declar mysql class
//
class sql_db
{
//
// declar variables
//
var $connection_id;
var $result;
//
// declar functions
//
function sql_db($sql_server, $sql_user, $sql_password, $sql_database)
{
$this->connection_id = mysql_pconnect($sql_server, $sql_user, $sql_password);
if (!$this->connection_id)
{
die(mysql_error());
}
else
{
$this->connection_id = mysql_select_db($sql_database);
if (!$this->connection_id)
{
die(mysql_error());
}
else
{
return $this->connection_id;
}
}
function sql_query($sql)
{
$this->result = mysql_query($sql);
if (!$this->result)
{
die(mysql_error());
}
else
{
return $this->result;
}
}
}
} // end class
?>
[/php]
[SIZE=2]danke[/SIZE]
und warum mag der wysiwyg mein weaverslave nicht und macht immer diese beschissenen size 2 und color rein? weil mein editor highlightet? das kanns ja wohl nicht sein[SIZE=1]bin schon leise[/SIZE]
nö nicht ganz, ich hatte bei der letzten function zwei schliesende } klammern und die 2te function war sozusagen in der 1.ten eingebettet. aber nun funktioniert es wunderbar, und ich danke für deine wachsamen äuglein.
edit: ich befasse mich heute eigentlich zum ersten mal mit classen, was stimmt denn da schon wieder nicht? es wird kein fehler ausgegeben, und kein echo:
[PHP]
$sql = 'SELECT * FROM '.CONFIG_TABLE;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetch_assoc($result))
{
echo $row[‚version‘];
}
[/PHP]
und die function:
[PHP]
function sql_fetch_assoc($result)
{
$this->result = mysql_fetch_assoc($result);
ich will ja nicht schonwieder mit dir streiten aber wenn da nach der else { statment die klammer fehlt und die dann am ende zuviel ist kannst du nicht einfach nö sagen. es ist wie es ist!
nur mal so zum drüber nachdenken du überschreibst eine resource id mit einem resultset
Mod-Edit: Doppelpost zusammengeführt - Bitte das nächste Mal draus achten (XraYSoLo)
Dann probier halt mal etwas rum. Du hast doch einen Thread zum Thema Performance von MySQL-Abfragen erstellt … dann solltest du das Problem hier auch ohne Hilfe gelöst bekommen.
Was soll das hier bitte sein?
[php]function sql_db($sql_server, $sql_user, $sql_password, $sql_database)
{
$this->connection_id = mysql_pconnect($sql_server, $sql_user, $sql_password);
$row configname enthält version als string, und vonfig value eigentlich 1.0.0 deshalb sollte das auch so funktionieren.
ein print_r($greatbook_config); geht übrigens auch nicht. wieder keine ausgabe… eines kann ich sagen, ich schaffe die classen sobald wie möglich ab und arbeite lieber wieder ohne.
edit. das ist der scheiß wysiwyg editor der nix von meinem eingerückten code annimt. das mit der connection id habe ich mir von foren abgeguckt, in der while schleife wird auch alles ausgegeben, aber danach nichtmehr. @ben was meinste genau mit debuggen? ich schau doch schon immer mit print_r wo der fehler hängt, und der ist diesmal der das das mit der while schleife nicht läuft.
nochmal edit: also nach der while schleife führt er überhaupt kein code mehr aus und ben meinst du nicht das man in deinem satz das mann in man ändern sollte?
nein, das sind 98 einträge in der datenbank. dein code bringt auch nix, nach der while schleife wird überhaupt nixmehr angenommen geschweige denn von ausgeführt.