[erledigt]mysql sys.

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

[erledigt]mysql sys.

Beitrag von Ambience »

also erstmal der code, dann die frage:

Code: Alles auswählen

<?php
if (!defined('IN_GREATBOOK'))
{
  die('Hacking attempt');
}

class Database
{

  var $connection_id;
  var $resource_id;
  
  function Database($sql_server, $sql_user, $sql_password, $sql_database)
  {
    $this->server = trim($sql_server);
    $this->user = trim($sql_user);
    $this->password = trim($sql_password);
    $this->database = trim($sql_database);
    
    $this->connection_id = mysql_connect($this->server, $this->user, $this->password);
    
    if ($this->connection_id)
    {
    
      $this->connection_id = mysql_select_db($sql_database);
      
      if (!$this->connection_id)
      {
        return false;
      }
      else
      {
        return $this->connection_id;
      }
    }
    else
    {
      return false;
    }
  }    
  
  function sql_query($sql)
  {
    $this->resource_id = mysql_query($sql);
    
    if (!$this->resource_id)
    {
      return false;
    }
    else
    {
      return $this->resource_id;
    }
  }
  
  function sql_fetchassoc($result)
  {
    $this->resource_id = mysql_fetch_assoc($result);
    
    if (!$this->resource_id)
    {
      return false;
    }
    else
    {
      return $this->resource_id;
    }
  }
  
  function sql_error($error, $error_descripton, $file, $line, $sql)
  {
      
    die('GreatBook: <b>' . $error . '</b>
         <br />
         <br />
        ' . $error_descripton . '
         <br />
         <br />
         <b><u>DEBUG MODE</u></b>
         <br />
         <br />
         SQL Error: ' . mysql_errno() . ' ' . mysql_error() . '
         <br />
         <br />
        ' . $sql . '
         <br />
         <br />
         Linie: ' . $line . '
         <br />
         File: ' . basename($file)
      );
      
  }
} // end class
?>
könnte mir einer verraten warum in der sql_error function :

Code: Alles auswählen

mysql_errno() und mysql_error()
funktioniert aber nicht:

Code: Alles auswählen

mysql_errno($this->connection_id);
da läuft ja irgendwas falsch oder?

und bei der sql_query function funktioniert:

Code: Alles auswählen

mysql_query($sql);
aber nicht:

Code: Alles auswählen

mysql_query($sql, $this->connection_id);
Danke
Zuletzt geändert von Ambience am 18.11.2006 17:30, insgesamt 1-mal geändert.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Code: Alles auswählen

      $this->connection_id = mysql_select_db($sql_database); 
[php:mysql_select_db] :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

oh lol... gar nicht gesehen ^^
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

so, nun hab ich diesen schönen code.. dachte mir(sicherheit muss sein) aber anscheinend will mysql nicht ganz:

Code: Alles auswählen

function db_query($sql)
  {
    $query = mysql_query(mysql_real_escape_string($sql, $this->connection_id), $this->connection_id);
    
    if (!$query)
    {
      return false;
    }
    else
    {
      $this->resource_id = $query;
      
      //
      // count query
      //
      $this->queries++;
      
      return $this->resource_id;
    }
  }
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\r\n FROM gb_config' at line 1
das liegt an dem mysql_real_escape_string...

so sieht die abfrage aus:

Code: Alles auswählen

$sql = 'SELECT config_name, config_value
  FROM ' . CONFIG_TABLE;
ES HANDELT SICH HIERBEI NICHT UM EIN PHPBB
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

Doku lesen bitte: http://de2.php.net/mysql_real_escape_string

Es ist nicht Sinn und Zweck den ganzen Query zu escapen! Dann gibt es solche Meldungen wie du sie bekommst - ganz so einfach ist Sicherheit dann doch nicht ;-)
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

doku hab ich ja gelesen.. hab den befehl ja von da...

Auch nach nochmaligen lesen, weiß ich nicht wie ich da anders vorgehen soll...

edit: könntest du mir dazu vllt. noch erklären wie phpbb 3 * das mit dem query "cache" macht?

also am anfang steht im footer z.B. 12 querys und wenn man reloaded nur noch 8. WIe funktioniert das denn? Danke

Danke
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

Ambience hat geschrieben:doku hab ich ja gelesen.. hab den befehl ja von da...

Auch nach nochmaligen lesen, weiß ich nicht wie ich da anders vorgehen soll...
Im Zweifel geht man so vor, wie in den Beispielen. Schau dir bitte Beispiele 1-3 an, diese zeigen eine gute Verwendung der Funktion. Wenn du den Code einfach nur nicht nachvollziehen kannst, hast du erstmal andere Probleme als SQL-Queries.
Ambience hat geschrieben: edit: könntest du mir dazu vllt. noch erklären wie phpbb 3 * das mit dem query "cache" macht?

also am anfang steht im footer z.B. 12 querys und wenn man reloaded nur noch 8. WIe funktioniert das denn? Danke
Mit der Implementation habe ich mich noch nicht beschäftigt. Meine phpBB3 Saison fängt mit RC-1, alles was vorher kommt, zieht an mir vorbei.
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

so, ok nun weiß ich wie das funktioniert. dann bastel ich mir noch eine parser klasse die die strings dann parst.

so hab keine idee gehabt wie ich es parsen soll. also schon ne idee nur nciht wie ich es umsetzen kann. naja habs jetzt so:

Code: Alles auswählen

$sql = '
SELECT * 
  FROM config 
    WHERE config_name = "' . $db->db_escape('language') . '"';
    
if (!($result = $db->db_query($sql)))
{
  die('geht fucking nicht');
}
und siehe da es geht...

ist das jetzt sicher?
Antworten

Zurück zu „Coding & Technik“