php.de

Zurück   php.de > php.de Intern > Beitragsarchiv

Beitragsarchiv Nur gucken, nichts anfassen. Das Archiv der Beiträge vergangener Zeiten.

 
 
LinkBack Themen-Optionen
Alt 12.04.2007, 13:47  
Erfahrener Benutzer
 
Registriert seit: 05.09.2004
Beiträge: 106
PHP-Kenntnisse:
Fortgeschritten
MaMo-Net
Standard SQL Query Builder gesucht

Hi,

ich suche einen SQL Query Builder, also ein Tool mit dem ich also mittels PHP-Code (nicht per GUI!) Datenbankanfragen generieren kann*. Das Tool soll wirklich nur die Queries generieren, braucht gar nicht mit der Datenbank zu kommunizieren.

Das Programm sollte kostenlos zu erhalten sein, muss aber nicht in PHP geschrieben sein, notfalls schreibe ich das auch von Java o.ä. in PHP um.
SourceForge, BerliOS und phpClasses (da gab es zwar was, aber das war alles nur halbfertiges Zeug, z.B. ohne JOINs) habe ich größtenteils durch (Stichwort SQL Query). Habe mir auch schon z.B. AdoDB angesehen, die Art hat mir jedoch nicht gefallen, da da auch noch genug Zeugs drum herum war.

MfG MaMo

* Aus $builder->select('field1, field2', 'table') wird z.B. SELECT field1, field2 FROM table
MaMo-Net ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.04.2007, 14:02  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von MaMo-Net
Das Programm sollte kostenlos zu erhalten sein, muss aber nicht in PHP geschrieben sein, notfalls schreibe ich das auch von Java o.ä. in PHP um.
SQL is nur von der Datenbanksoftware abhängig, nicht von der Programmiersprache, in der es verwendet wird Es ist quasi ne eigene Programmiersprache. In sofern sollte es egal sein in welcher Sprache dein Query-Builder programmiert sein sollte.

Mir ist derzeit auch keiner bekannt. Eventuell kannst du auch aus einem Framework die Datenbankklasse nehmen und daraus was basteln. Die Zend_Db_Select aus dem Zend Framework könnte dafür funktionieren. Desweiteren sind komplexe Queries alles andere als einfach zu generieren, insofern dürftest du "ein vollständigen Builder" vermutlich eher selten begegnen.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 12.04.2007, 14:24  
Erfahrener Benutzer
 
Registriert seit: 05.09.2004
Beiträge: 106
PHP-Kenntnisse:
Fortgeschritten
MaMo-Net
Standard

Zitat:
Zitat von KingCrunch
SQL is nur von der Datenbanksoftware abhängig, nicht von der Programmiersprache, in der es verwendet wird Es ist quasi ne eigene Programmiersprache. In sofern sollte es egal sein in welcher Sprache dein Query-Builder programmiert sein sollte.
Das ist mir schon klar, das sollte nur aussagen, dass ich das Teil im Endeffekt für ein PHP-Skript brauche und ich demnach lieber PHP-Script hätte, aber auch Script aus anderen Sprachen portieren würde.

Zitat:
Zitat von KingCrunch
Mir ist derzeit auch keiner bekannt. Eventuell kannst du auch aus einem Framework die Datenbankklasse nehmen und daraus was basteln. Die Zend_Db_Select aus dem Zend Framework könnte dafür funktionieren.
Danke für den Hinweis. Ich gucke mir das mal an. Mittlerweile bin ich bei phpClasses auch noch über eine Klasse gestolpert (phpSQL, http://www.phpclasses.org/browse/package/3799.html) die ich mir auch noch einmal ansehen werde. Über weitere Vorschläge würde ich mich aber trotzdem freuen ^^

MfG MaMo
MaMo-Net ist offline  
Alt 18.04.2007, 01:13  
Erfahrener Benutzer
 
Registriert seit: 17.02.2006
Beiträge: 132
PHP-Kenntnisse:
Fortgeschritten
marcusson befindet sich auf einem aufstrebenden Ast
Standard

Ein QueryBuilder? Das ist kein Problem.

Das Yana Framework hat einen integriert. Du kannst die Software kostenlos downloaden unter: http://www.yanaframework.net
Bedienung ist ganz einfach: zuerst die Struktur deiner Datenbank eingeben, oder per Reverse-Engineering importieren.
Wie das geht erklärt ein Tutorial im Handbuch.

Der QueryBuilder erzeugt alle SQL-Statements zum Erstellen der Tabellen, sowie lesen und modifizieren der Datensätze automatisch und du kannst, sofern das gewünscht ist, auch die notwendigen Formulare generieren lassen.

Das Framework validiert sämtliche erstellten Queries automatisch gegen das Schema der Datenbank, bevor sie an den Datenbankserver gesendet werden. (Was die Wahrscheinlichkeit von SQL-Injections nahezu auf Null reduziert.)

Es werden MySQL, Oracle, IBM DB2, MS-SQL Server und PostgreSQL unterstützt. Der Builder erzeugt auch Foreign-Keys, Unique-Constraints, Autonumber/Identity/Sequences und Indexes.
Für MySQL wird der Treiber dabei automatisch für jede Tabelle zwischen MyIsam und InnoDB bestimmt, je nachdem welche Features benötigt werden.
Der proprietäre Datentyp "Array" (PostgreSQL) steht über die API auf allen DBMS zur Verfügung (wird simuliert).

Transaktionen werden automatisch gestartet, wenn mehrere Insert- oder Update-Statements nacheinander abgesetzt werden.

Die API erlaubt es, "Trigger" und "Constraints" in PHP-Syntax zu definieren. Diese laufen unabhängig davon welches Datenbanksystem eingesetzt wird.
Damit kann man zum Beispiel den Zugriff auf bestimmte Spalten an die Zugriffsrechte des Nutzers koppeln, oder individuelle Syntaxprüfungen einbinden.

Das Yana Framework protokolliert alle wichtigen Aktionen auf der Datenbank automatisch mit Uhrzeit und Nutzernamen.

Die API unterstützt mehrere semantische Datentypen, wie "Mail", "Image", "File" oder "Select" (für Aufzählungstypen).
Zum Beispiel kann man sich für Spalten vom Typ "Image" Uploadformulare, Download, Grafikvorschau und Thumbnails automatisch generieren lassen.

Abschliessend: wenn dem Endkunden gar kein DBMS zur Verfügung steht, dann simuliert das Framework einfach eines. Dabei beherrscht die simulierte Datenbank alle oben genannten Features, inklusive Transaktionen.

Und wenn du noch Fragen hast, helfe ich dir gern
marcusson ist offline  
Alt 18.04.2007, 16:29  
Erfahrener Benutzer
 
Registriert seit: 05.09.2004
Beiträge: 106
PHP-Kenntnisse:
Fortgeschritten
MaMo-Net
Standard

Hi,

danke für den Hinweis. Ich habe mir das Paket mal heruntergeladen und werde es mir dann mal anschauen. Was ich mich aber noch frage: Wie viel Overhead entsteht dabei? Ich möchte das ganze möglichst performant halten, daher werde ich einige Sachen wohl auch dann bei dem Paket entfernen und auf das benötigte beschränken.

Das Feature "ohne Datenbank" finde ich übrigens sehr interessant!

Ich melde mich wieder, MaMo
MaMo-Net ist offline  
Alt 18.04.2007, 16:33  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das YANA Framework hast du programmiert oder? Ganz im Alleingang?
Hört sich ja wirklich lecker an, setzt aber eine sehr gute Datanbankplanung voraus.
Und genau da hörts bei mir auf. Ich würde gern eine kleine User-Verwaltung für einen Clan - die "Online Zocker - erstellen. Eine andere Anwendung wäre ein Online-Katalog. Ist dies mit deinem Framework für nicht so versierte Programmierer relativ einfach möglich?

Ich lads mir gleich mal runter und schaus mir an.
Man sieht der Projektseite nicht gerade die Professionalität an die dahinter steckt. Wenn du Lust und Zeit hast mir zu helfen würde ich dir gern ein schönes CSS Design erstellen.
phpdummi ist offline  
Alt 20.04.2007, 00:25  
Erfahrener Benutzer
 
Registriert seit: 17.02.2006
Beiträge: 132
PHP-Kenntnisse:
Fortgeschritten
marcusson befindet sich auf einem aufstrebenden Ast
Standard

@phpdummi
Ja, das YANA Framework habe ich in den letzten 6 Jahren im Alleingang geschrieben.

Zitat:
Ich würde gern eine kleine User-Verwaltung erstellen. Eine andere Anwendung wäre ein Online-Katalog.
Eine Nutzerverwaltung ist bereits integriert und ein Online-Katalog ist auch kein Problem. Ich habe festgestellt, dass die meisten klassischen Kataloge sich gut eignen. Also zum Beispiel Kundendatenbanken, Auftragslisten, Filmdatenbanken, oder die heimische CD/DVD-Sammlung, kann man quasi ohne Programmierung erstellen.

Ich habe das zum Spass mal für jemanden mit einer völlig fremden Datenbank gemacht. Insgesamt habe ich für alles zusammen gerade mal eine halbe Stunde gebraucht.

Zitat:
Wenn du Lust und Zeit hast mir zu helfen würde ich dir gern ein schönes CSS Design erstellen.
Ja, klar helfe ich dir. Und ein schönes Design wäre nett.
Ich bin leider mit der Programmierung derart ausgelastet, dass ich echte Probleme habe mich um die Optik der Webseite zu kümmern. Melde dich doch einfach mal bei mir.

Zitat:
Wie viel Overhead entsteht dabei?
@mamo
Ich habe die Performance der Datenbankschnittstelle getestet. Dazu habe ich 100 Mal eine Mischung aus jeweils 40 verschiedenen Queries an meine simulierte Datenbank geschickt. Auf einem Single-Core Pentium 4 mit 3GHz, 1GB RAM und Apache mit PHP 5 als Testsystem.

Der QueryBuilder, die API und meine virtuelle Datenbank benötigen für die gesamte Verarbeitung einer Query etwa 0,006 Sekunden, vom Erzeugen des Query-Objekts und SQL-Statements, über das Erstellen des Resultsets, bis zur Rückgabe des Ergebnisses. Oder anders ausgedrückt, das System verarbeitet durchschnittlich 162 Queries pro Sekunde.

An der Datenbankschnittstelle arbeite ich gerade mal wieder. Das virtuelle Datenbanksystem wird in der nächsten Version eine 5-10% schnellere Verarbeitung bringen.

Im Moment arbeite ich an einem "QueryParser", der es erlauben wird, handgeschriebene SQL-Statements in ein Query-Objekt zu parsen, zum Beispiel um ein SQL-Statement in der Syntax eines gewünschten Ziel-DBMS zu exportieren. Sprich: du wirfst Standard-SQL rein und holst dir bei Bedarf MySQL, IBM DB2 oder Oracle wieder heraus

Außerdem werde ich eine neue "QueryBuilder"-Klasse offiziell bereitstellen, die im Moment bereits fertig ist. Hier fehlt nur noch die Dokumentation. Sobald das alles läuft, will ich meiner virtuellen Datenbank noch ein paar neue SQL-Befehle beibringen, damit alles noch etwas flexibler wird.

Im Mai wird es soweit sein. Dann kommt der nächste Release.

Zitat:
daher werde ich einige Sachen wohl auch dann bei dem Paket entfernen und auf das benötigte beschränken.
Kein Ding. Du brauchst mindestens eine Instanz des Frameworks. Diese initialisiert die virtuellen Verzeichnisse und lädt die Konfigurationsdaten. Anschließend benutzt du die Methode connect() zum Verbinden mit der Datenbank.

PHP-Code:
require_once('library.php');
global 
$YANA;
$YANA = new Yana("config/system.config", array());
$database $YANA->connect("myDatabase"); 
Das war's - über das $database Objekt setzt du deine Queries ab. Im Handbuch gibt es ein "Kochbuch für Entwickler". Dort findest du mehrere Codebeispiele.

Der String "myDatabase" ist dabei der Name der Strukturdatei, welche die Datenbank beschreibt. Die Verbindungsdaten lädt das Framework aus einer Konfigurationsdatei 'config/dbconfig.php'.


Normalerweise würde ich allerdings eher dazu raten das Framework komplett zu benutzen. Dadurch hast du dann auch Zugang zur Nutzerverwaltung und dem Software Developement Kit mit Formulargenerator.

Ich habe das zum Beispiel im März live auf der Messe demonstriert. Aus eigener Erfahrung weiß ich, es gibt nichts schwereres auf der Welt als Kunden zu überzeugen. Und in der IT-Branche ist das besonders schwer, weil es eben etwas ist, was man nicht "anfassen" kann.

Wenn du als Freelancer, oder Vertreter einer kleinen Firma im Verkaufsgespräch bist, dann kann das deshalb eine echte Hilfe sein. Du kannst zusammen mit dem Kunden live am Bildschirm einen Prototyp "seiner" Datenbankanwendung nach seinen Vorstellungen entwerfen, mit ihm zusammen Änderungen besprechen und direkt ausprobieren. Dazu fügst du einfach eine neue Spalte zu seiner Tabelle hinzu oder änderst eine Spalte ab und sämtliche Formulare passen sich in Echtzeit selbstständig deinen Änderungen an. Der Kunde sieht "sein" Projekt, anstatt nur in der Theorie darüber zu sprechen.
Ich habe die Erfahrung gemacht, dass das ein echter Pluspunkt sein kann.
marcusson ist offline  
Alt 21.04.2007, 01:54  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ist absolut ein Pluspunkt!
Mit dem CSS Design fange ich demnächst direkt mal an.
Alles weitere können wir ja per Email besprechen.
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline  
Alt 07.05.2007, 21:10  
Erfahrener Benutzer
 
Registriert seit: 17.02.2006
Beiträge: 132
PHP-Kenntnisse:
Fortgeschritten
marcusson befindet sich auf einem aufstrebenden Ast
Standard

Das ist nett. Ich werde mich erkenntlich zeigen

Seit gestern Abend ist übrigens eine neue Version 2.9.3 draußen, welche viele Verbesserungen für den Query-Builder beinhaltet. Das beinhaltet einen neuen OO-Wrapper, diverse Fixes für den Formulargenerator und den SQL-Parser. Die anderen Verbesserungen sind Kleinkram: Konfigurationstool für den Spamfilter mit Unterstützung für reguläre Ausdrücke et cetera.

Außerdem ist mir aufgefallen, dass ich bei den ersten Performance-Messungen für den Query-Builder aus Versehen noch das Debugging aktiviert hatte. In Wahrheit sind es 0,003 Sekunden pro Query, oder 280 Queries pro Sekunde - ohne Debugging ist es also in etwa doppelt so schnell.

Ich habe ein internes Plugin mit dem Quellcode für die Performance-Tests, einigen Code-Tests und einer SQL-Konsole zum Testen des SQL-Parsers. Falls euch das also näher interessiert, kann ich den Quellcode zum Download stellen.
marcusson ist offline  
Alt 07.05.2007, 21:12  
Erfahrener Benutzer
 
Registriert seit: 05.09.2004
Beiträge: 106
PHP-Kenntnisse:
Fortgeschritten
MaMo-Net
Standard

Hi,

bin noch nicht zum testen gekommen (Klausuren) aber was mir gerade auffällt ist, das deine Benchmarks derzeit ohne Vergleichswert nutzlos sind. Stelle doch bitte noch die Zeit von normalen mysql_* etc. Funktionen dazu, damit man vergleichen kann.

Bis dann, MaMo
MaMo-Net ist offline  
 


Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Query abbrechen nicon_26 Datenbanken 1 13.02.2008 11:34
Variablen in Query automatisch escapen Maho88 PHP Tipps 2007 10 31.07.2007 08:42
PHP/MySQL: Query wird nicht ausgeführt Zergling-new Tutorials 5 09.05.2006 23:16
query und ' speichern? flflfl PHP Tipps 2006 2 14.04.2006 18:21
[Erledigt] Query gesucht Datenbanken 3 18.01.2006 19:12
query r�cksetzen? Promaetheus PHP Tipps 2007 15 01.12.2005 13:53
Community-System (Builder) gesucht! (Installation, Konfig.) Beitragsarchiv 3 30.09.2005 13:26
erklärung gesucht: nested set query! Sirke Datenbanken 0 19.09.2005 17:24
Query, was aus einer Tabelle mehrere Summen rausholt Datenbanken 3 14.09.2005 16:45
Geht das mit nur einem Query? Bouni Datenbanken 3 14.09.2005 09:08
pimps mit hirn gesucht Beitragsarchiv 12 20.08.2005 18:42
Redakteure für sehr großes Projekt gesucht Beitragsarchiv 1 19.08.2005 01:57
select query durch if anweisungen splitten Datenbanken 6 06.09.2004 13:46
immer mysql_select_db vor query wenn man pconnect benutzt robo47 PHP Tipps 2004 8 03.09.2004 14:56
[Erledigt] Query läuft nicht Datenbanken 6 13.08.2004 21:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql query builder, php query builder, php sql query builder, mysql query generator, sql query builder, sql query generator, sql query builder php, php sql builder, query builder php, php mysql query builder, query builder mysql, java sql query builder, mysql abfrage generator, mysql querybuilder, sql abfrage generator, online sql query generator, sql query generator online, online sql query builder, php mysql query generator, sql query builder online

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.