php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 23-08-2012, 11:26
mrlack34
 Registrierter Benutzer
Links : Onlinestatus : mrlack34 ist offline
Registriert seit: Feb 2008
Beiträge: 3
mrlack34 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Variablen in SQL Abfragen

Hallo,

ich verwende bei einer SQL Abfrage bei "Where" für die Spalte die Variable $branche.

Der Wert kommt aus einem Formular mit Drop Down Menu. Die erste Abfrage funktioniert. Beim weiterblättern gibt mysql_error() folgende Fehlermeldungen aus:

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 '= 'x' LIMIT 2, 2' at line 3
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in K:\htdocs\test\suchen.php on line 46

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in K:\htdocs\test\suchen.php on line 63
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 '= 'x'' at line 3


Wenn ich der Variable $branche direkt den Wert "tonstudio" zuweisen, funktioniert das Script ohne Probleme. Ich vermute den Fehler im mysql Query, bin mir aber nicht sicher, weil die Gegenprobe (Variable direkt zuweisen) keinen Fehler zeigte.

Hier mal der Quelltext. Was mache ich falsch?
Danke für Eure Hilfe.


PHP-Code:
<form action="<?php $PHP_SELF ?>" method="POST">
<select name='branche'>";
<option value='label'>Label</option>";
<option selected value='tonstudio'>Tonstudio</option>
</select>
<input type='submit' value='suchen' name='suchen'>
</form>

<?php
//Abfrage auf welcher Seite man ist 
$seite $_GET["seite"];  

//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1 
if(!isset($seite)) 

     
$seite 1


//Einträge pro Seite: Hier 2 pro Seite 
$eintraege_pro_seite 2

//Ausrechen welche Spalte man zuerst ausgeben muss: 
$start $seite $eintraege_pro_seite $eintraege_pro_seite

//Verbindung zur Datenbank aufbauen 
include "inc/connect.php";

$branche $_POST ["branche"];

//$branche= 'tonstudio';

//Tabelle Abfragen 
$abfrage mysql_query    
("
    SELECT  *         
    FROM    tonstudios 
    WHERE    $branche = 'x' 
    LIMIT $start, $eintraege_pro_seite
"
);
                        
echo 
mysql_error();    
                                                            
$ergebnis $abfrage

//Ausgabe Ergebnisse
while($row mysql_fetch_object($ergebnis)) 
{
    echo 
$row->firma;
    echo 
$row->plz;
    echo 
$row->ort;
}
                                            
//Jetzt kommt das "Inhaltsverzeichnis", 
//sprich dort steht jetzt: Seite: 1 2 3 4 5 

$result =mysql_query    
("
    SELECT  *         
    FROM    tonstudios 
    WHERE    $branche = 'x' 
"
);
                            
$menge mysql_num_rows($result); 
echo 
mysql_error();

//Errechnen wieviele Seiten es geben wird 
$wieviel_seiten $menge $eintraege_pro_seite

//Ausgabe der Seitenlinks: 
echo "<div align=\"center\">"
echo 
"<b>Seite:</b> "


//Ausgabe der Links zu den Seiten 
for($a=0$a $wieviel_seiten$a++) 

               
$b $a 1

          
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben 
               
if($seite == $b
                  { 
                     echo 
"  <b>$b</b> "
                  } 

          
//Aus dieser Seite ist der User nicht, also einen Link ausgeben 
              
else 
                  { 
                      echo 
"  <a href=\"?seite=$b\">$b</a> "
                  } 


echo 
"</div>"
?>
Mit Zitat antworten
  #2 (permalink)  
Alt 23-08-2012, 11:54
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mrlack34 Beitrag anzeigen
Ich vermute den Fehler im mysql Query
Da vermutest du falsch.

Du versuchst auf $_POST ["branche"] zuzugreifen – aber einen solchen Parameter gibt es beim Blättern natürlich nicht mehr, weil die Aufrufe der weiteren Seiten per GET geschehen. (Das hätte dir vernünftig eingestelltes error_reporting auch verraten – also bitte schleunigst machen!)

Entweder speicherst du diesen Wert also beim ersten Aufruf in eine Session; oder du musst ihn mit jedem Blätter-Link als zusätzlichen Parameter mit übergeben.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 23-08-2012, 19:59
mrlack34
 Registrierter Benutzer
Links : Onlinestatus : mrlack34 ist offline
Registriert seit: Feb 2008
Beiträge: 3
mrlack34 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Variablen in SQL Abfragen

Danke für die Lösung. Hab es grob verstanden. Da ich mit Sessions bis jetzt noch nicht die Erfahrung habe:

1. Wenns nicht zuviel Arbeit macht. Kann mir einer bitte sagen, wie ich den Code ändern muß. Ein Beispiel wäre hilfreich, um es nachvollziehen zu können.

2. Oder wo finde ich ein Beispiel für eine Blätterfunktion mit Sessions?

Für den Lern- und Versteheffekt brauche ich ein funktionierndes Beispiel, wenn auch sehr einfach gehalten.
Danke für Eure Hilfe.
Mit Zitat antworten
  #4 (permalink)  
Alt 27-08-2012, 00:35
ImmerOn
 Registrierter Benutzer
Links : Onlinestatus : ImmerOn ist offline
Registriert seit: Aug 2012
Beiträge: 41
ImmerOn befindet sich auf einem aufstrebenden Ast
Standard

Hi,

bin mir nicht ganz sicher, da ich auch eher ein Anfänger bin, aber ich mache es so:
$_SESSION["branche"] = mysql_real_escape_string($_POST["branche"]);
Damit hast du die SESSION erstellt.
Das mysql_real_escape_string bringt meines Wissens mehr Sicherheit, da Formular-Daten ganz einfach vom User bösartig verändert werden könnten, um so neue MySQL-Abfragen oder ähnliches zu erstellen.
Wenn ich mich täusche, berichtigt mich bitte, aber ich glaube das stimmt so
Mit der SESSION geht das auf jedenfall, also hatte das bei meinen alten Seiten auch so.

LG
Mit Zitat antworten
  #5 (permalink)  
Alt 27-08-2012, 08:36
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

@ImmerOn:

Du hast zwar recht, dass Benutzerdaten per se als gefährlich anzusehen sind, aber deren Prüfung, Maskierung, Umcodierung, etc. muss genau dort vorgenommen werden, wo sie verwendet werden sollen. mysql_real_escape_string (mal davon abgesehen, dass es veraltet ist) ist nur in Verbindung mit einer Datenbankabfrage sinnvoll. In einer Session hat es nichts verloren.

Siehe auch Artikel:Kontextwechsel ? SELFHTML-Wiki

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #6 (permalink)  
Alt 27-08-2012, 12:20
ImmerOn
 Registrierter Benutzer
Links : Onlinestatus : ImmerOn ist offline
Registriert seit: Aug 2012
Beiträge: 41
ImmerOn befindet sich auf einem aufstrebenden Ast
Standard

Ok danke, der TE müsste dann ja die SESSION in seiner MySQL-Abfrage nutzen. Kann man bei SESSIONs auch mysql_real_escape_string verwenden?
Also mysql_real_escape_string($_SESSION["..."])

Das dies veraltet ist weiß ich auch, ich arbeite nur noch mit MySQLi Prepared-Statements, da wurde mir gesagt dass dies ziemlich sicher ist.

LG
Mit Zitat antworten
  #7 (permalink)  
Alt 27-08-2012, 12:25
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Das wäre der richtige Weg. Genau dann, wenn man eine SQL-Abfrage bastelt, escapet man den Wert. Woher dieser dann kommt (Formular, Session, Cookie, Textdatei, vorherige Datenbankabfrage) ist absolut egal. Kurz: mysql_real_escape_string($_SESSION["irgendwas"]) geht natürlich genauso.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 27-08-2012, 16:29
helpen
 Banned
Links : Onlinestatus : helpen ist offline
Registriert seit: Jul 2012
Beiträge: 4
helpen befindet sich auf einem aufstrebenden Ast
Standard

starke Unterstützung auf jeden Fall nice

LG

Geändert von TobiaZ (17-09-2012 um 15:25 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[SQL allgemein] Zwei SQL Abfragen zu einer verschmelzen hdmnf SQL / Datenbanken 5 04-09-2007 21:30
[Variablen] Blätter Funktion bei SQL Abfragen mit WHERE Bedingung Meinbrodt PHP Developer Forum 4 07-09-2006 12:32
Variablen abfragen tomklug PHP Developer Forum 5 08-07-2005 15:17
Variablen in Abfragen Earl of Green PHP Developer Forum 15 28-01-2005 21:06
Gewichtete Abfragen SQL-Abfragen Berni Tutorials 0 12-03-2002 21:10

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:28 Uhr.