php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.08.2011, 10:36  
Neuer Benutzer
 
Registriert seit: 01.12.2008
Beiträge: 27
PHP-Kenntnisse:
Fortgeschritten
supervision befindet sich auf einem aufstrebenden Ast
Standard Codierung SQL-Parameters

Hallo Leute,

ich verwende diese praktische Klasse um meine DB in einem Web-FE jenseits phpmyadmin darzustellen.

Beim Setzten der WHERE Condition gibt es allerdings einen syntaktischen Fehler, und ich habe nun einige Formatierungsmöglichkeiten ausprobiert, allerdings half es alles nichts. Nur hart codiert klappt der SQL SELECT:

PHP-Code:
class mysrc extends drasticSrcMySQL {
    
    protected function 
select(){    
        
$res mysql_query("SELECT * FROM $this->table WHERE id = 21"$this->orderbystr$this->conn) or die(mysql_error());
        
        return (
$res);
    }    

Ich versuche wie folgt zu formatieren (innerhalb der Klasse):

PHP-Code:
$format =  'WHERE id = %d '// %s auch versucht
$this->wherestr sprintf$format$this->cond); //in $this-cond steht die id 
Funktionsaufruf:
PHP-Code:
$res mysql_query("SELECT * FROM $this->table "$this->wherestr $this->orderbystr$this->conn) or die(mysql_error()); 

Die Fehlermeldung ist immer:

"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 'ORDER BY id' at line 1"

Klassischer SQL Syntax-Fehler.
Was ich nicht verstehe:

Hart codiert funktioniert der Aufruf. Also muss die gesamte WHERE Condition doch als string formatiert so klappen!
PHP-Code:
$format =  'WHERE id = %s '
Hattet ihr schon mal so einen Fall oder eine Idee, woran es hier scheitert?

TIA,
sv
supervision ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.08.2011, 10:46  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

bevor du weiterbastelst - bitte trenne mal das Ganze ...

zuerst weist du die SQL-Abfrage (also den String) einer Variablen zu - dann gibst du diese Variable zu Debug-Zwecken aus - dann schickst du die Abfrage zur Datenbank

ich würd mal sagen, dann fällt dir der Fehler schon selbst auf ...
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 01.08.2011, 10:48  
Neuer Benutzer
 
Registriert seit: 26.07.2011
Beiträge: 6
PHP-Kenntnisse:
Fortgeschritten
bn.One befindet sich auf einem aufstrebenden Ast
Standard

Wie lautet denn der gesamte Query-String, evtl. ist einer der Werte z.B. $this->cond nicht sauber?
bn.One ist offline   Mit Zitat antworten
Alt 01.08.2011, 12:01  
Neuer Benutzer
 
Registriert seit: 01.12.2008
Beiträge: 27
PHP-Kenntnisse:
Fortgeschritten
supervision befindet sich auf einem aufstrebenden Ast
Standard

versuche grad zu debuggen...echo geht ja an dieser Stelle nicht.

in der Select-Funktion der Klasse speichere ich mir den string in $this>sql

PHP-Code:
    protected function select(){
        
$this->sql "SELECT * FROM $this->table " $this->wherestr $this->orderbystr;
        
$res mysql_query("SELECT * FROM $this->table " $this->wherestr $this->orderbystr$this->conn) or die(mysql_error());
        return (
$res);
    } 
Anschließend "var_dumpe" ich den Inhalt des Objektes

PHP-Code:
var_dump ($src = new drasticSrcMySQL($server$user$pw$db$table$cond$options )); 
Da steht aber nur der initiale Wert der sql-variable, die ich in der Klassendefinition deklariert habe.

PHP-Code:
class drasticSrcMySQL {
    
// these options should be set via the options argument on the constructor!
[...]
    public 
$sql 'test'
PHP-Code:
object(drasticSrcMySQL)#1 (21) {
  
["add_allowed"]=>
  
bool(true)
  [
"delete_allowed"]=>
  
bool(true)
  [
"editablecols"]=>
  
NULL
  
["defaultcols"]=>
  
NULL
  
["defaultcolsContainExpression"]=>
  
bool(false)
  [
"sortcol"]=>
  
NULL
  
["sort"]=>
  
NULL
  
["SQLCharset"]=>
  
string(4"utf8"
  
["HTMLCharset"]=>
  
string(5"UTF-8"
  
["sql"]=>
  
string(4"test" 
Verstehe nicht warum der Wert nicht überschrieben wird....wie würdet ihr denn debuggen?

Geändert von supervision (01.08.2011 um 12:17 Uhr).
supervision ist offline   Mit Zitat antworten
Alt 01.08.2011, 12:41  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

PHP-Code:
protected function select(){
   
$sql "SELECT * FROM $this->table " $this->wherestr $this->orderbystr;
   echo 
'<pre>';
   
var_dump($sql);
   echo 
'</pre>';
   
$res mysql_query($sql,$this->conn) or die(mysql_error());
   return (
$res);

- klar geht das mit echo

hinterher wenn es klappt kannst du die Debug-Ausgaben auch wieder löschen / auskommentieren
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 01.08.2011, 16:10  
Neuer Benutzer
 
Registriert seit: 01.12.2008
Beiträge: 27
PHP-Kenntnisse:
Fortgeschritten
supervision befindet sich auf einem aufstrebenden Ast
Standard

Du hast Recht, vor lauter header-warnings habe ich meine Ausgaben glatt übersehen.

Parameter kamen nicht richtig in der Klasse an, völlig strange, wenn ich dort nen echo gemacht hatte wurden die Werte ordnungsgemäß angezeigt, allerdings im sql Aufruf waren die Werte leer, obwohl ich diese vorher der eigens angelegten Klassenvariable zugeordnet hatte.

Ich habe es nun mit der "addparams" Möglichkeit gelöst, falls mal einer von euch mit der DrasticData-Klasse arbeiten sollte.

Seite mit dem Grid:

Code:
<script type="text/javascript">

function rebuild_table() {
    if (thegrid) $('grid1').empty();
    thegrid = new drasticGrid('grid1', {
        pathimg:"img/",
        pagelength:10,
        addparams:"&tablename="+your.value
    });
}
</script>
Klasse:

PHP-Code:
    function __construct($server$user$pw$db$table$options null) {
        [...];                        
        }
        
/* Optionally retrieve parameters from the addparams parameter.
         * Uncomment the line below and change "myparameter" to the name of your parameter
         * If you pass multiple parameters copy the line multiple times
         * 
         * $myparameter = $_REQUEST["myparameter"];
         */
        
$tablename $_REQUEST["tablename"];

        
$this->table $table
Danke auf jeden Fall für eure Unterstüzung!
supervision ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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
Einstiegsprobleme bei SQL Eviator Datenbanken 2 21.06.2011 12:00
SQL Statement mit UPDATE und SELECT: fetch_array Micodat Datenbanken 2 21.04.2011 18:09
[Erledigt] SQL Abfrage escapen wooha PHP Einsteiger 3 18.04.2011 10:13
[Erledigt] SQL zweistufige Abfrage Elefterios Datenbanken 12 13.03.2011 15:23
[Erledigt] SQL WHERE ohne mehrere SQL Abfragen Soulstormer Datenbanken 10 01.03.2011 16:26
SQL Abfrage INNER JOIN etc. chr1s-eg Datenbanken 4 01.03.2011 13:37
Problem mit PHP Variablen in SQL Befehl Noahndertaler Datenbanken 2 26.01.2011 17:14
Werte mehrerer Checkboxen für SQL Abfrage übernehmen? krais PHP Einsteiger 4 14.01.2011 21:24
Use The Index, Luke! - SQL Tuning Resource Markus Winand Datenbanken 0 04.12.2010 11:12
False Abfrage und SQL hängt sich auf marc77 Datenbanken 4 22.11.2010 14:57
SQL Intervall // Format übergeben noop PHP Tipps 2010 6 11.11.2010 12:32
SQL Datei mit PHP ausführen Kein Genie PHP Tipps 2010 2 09.11.2010 09:52
Missing Parameters ApfeL Server, Hosting und Workstations 15 11.05.2006 15:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql codierung, drasticsrcmysql wherestr, \der variablenname wurde bereits deklariert.\ sql, der variablenname wurde bereits deklariert sqlparameter, drasticsrcmysql select, sql <parameter><condition>, codierungs function sql, sql parameters kodierung, sqlparameters javascript

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:04 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