SQL Abfrage nach PHPBB-Stil...

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
cloud7
Mitglied
Beiträge: 10
Registriert: 13.06.2003 11:07

SQL Abfrage nach PHPBB-Stil...

Beitrag von cloud7 »

Hi Modder!

Nach installieren von einigen modds und auch selbst erweitern meines PHPBBs möcht ich nun selbst ein MOD schreiben.
Nun hab ich aber gesehen, dass PHPBB eine andere mysql abfrage technik benutzt als ich und ich möchte das möglichst kompatibel machen... *g*

Deswegen nun meine Frage: Wie erstelle ich eine SQL abfrage im PHPBB stil und wie erkenne ich im code ob eine connection noch offen ist, oder ob ich noch eine machen muss? (die abfrage wär im usercpp_register.php unter der Zeile: "$message = $lang['Account_added'];")

Bisher ist mir nebst der -verlateten- mysql_db_query folgende mysql abfragemöglichkeit geläufig:


(Beispiel)

Code: Alles auswählen

@mysql_connect($dbHost, $dbUser, $dbPass)
  or die("Abbruch: Verbindung zu '$dbHost' konnte nicht hergestellt werden.");
@mysql_select_db($sdbName)
  or die("Abbruch: Datenbank '$sdbName konnte nicht selektiert werden.<br><br>MySQL sagt: ".mysql_error());

$GetUId = "SELECT user_id FROM tblBBusers WHERE username = '$username' AND user_password = MD5('$password')";
$UId = mysql_query($GetUId);
mysql_close();
list($userId) = mysql_fetch_row($UId);
tnx schonmal,
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Meist hilft da, ein paar Zeilen des phpBB-Codes anzuschauen. Alle DB-Abfragen gehen über eine DataBase Abstraction Layer (DBAL), um möglichst große Unabhängigkeit vom verwendeten Datenbank-System zu erhalten. Sbei brauchst du dir i.d.R. keine Gedanken über eine bestehende DB-Verbinung machen - das macht die DBAL für dich...

Ansonsten:
http://cvs.sourceforge.net/cgi-bin/view ... xt?rev=1.1
http://cvs.sourceforge.net/cgi-bin/view ... tm?rev=1.3

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
cloud7
Mitglied
Beiträge: 10
Registriert: 13.06.2003 11:07

Beitrag von cloud7 »

hmm, klingt etwas kompliziert...

Wie würde denn ein Beispiel meiner obiegen abfrage so aussehen?
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Versuchen wir's mal:

Code: Alles auswählen

// Grundgerüst - in diesem Fall für 'ne Datei im phpBB-Hauptverzeichnis.
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

// mysql_connect und mysql_select_db entfallen
// SQL-Abfrage. Idealerweise sollte die Tabelle als Konstante (aus der constants.php) angegeben werden
$sql = "SELECT user_id
  FROM tblBBusers
  WHERE username = '$username'
    AND user_password = md5('$password')"; 
// Abfrage ausführen
if ( !$result = $db->sql_query($sql) )
{
  message_die(GENERAL_ERROR, 'Could not query data', '', __LINE__, __FILE__, $sql); // phpBB-eigene Fehlerroutine
}
// Datensatz holen
if ( !($row = $db->sql_fetchrow($result)) )
{
  message_die(GENERAL_ERROR, 'Could not query data', '', __LINE__, __FILE__, $sql); // phpBB-eigene Fehlerroutine
}
// Close entfällt

// Die user_id ist nun als $row['user_id'] verfügbar
Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
cola-junkie
Mitglied
Beiträge: 85
Registriert: 01.12.2003 03:26
Wohnort: Ludwigshafen
Kontaktdaten:

hmmm

Beitrag von cola-junkie »

Gut, dann stell ich an dieser Stelle mal eine Frage hinterher:

DB-Abfragen mach ich ja mit folgender Zeile, z.b.

Code: Alles auswählen

sql = "SELECT user_id FROM tblBBusers WHERE username = '$username' AND user_password = md5('$password')";
wie könnte ich denn jetzt erreichen, das er eine Abfrage nicht in der üblichen Datenbank in der phpBB auch liegt, durchführt, sonderen meinetwegen in einer anderen. Soll dann so aussehen:

Code: Alles auswählen

sql_xxx = "SELECT user_id FROM tblBBusers WHERE username = '$username' AND user_password = md5('$password')";
Sprich, wenn die Zeile mit sql = " beginnt, soll er die übliche Datenbank verwenden, und wenn sie mit sql_xxx = " beginnt, dann soll eine andere Datenbank verwendet werden.

Angaben für Tabellennamen sollen trotzdem in der constants.php bzw. für die zweite DB in der config.php stehen.

Schon mal Danke für Eure Hilfe.
Leider bin ich über die Suche nämlich nicht fündig geworden, bzw. kann ich nicht ganz nachvollziehen, wie phpBB die Verbindung zur entsprechenden DB aufbaut.
Gruss cola-junkie
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“