zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden mySQLi Abfrage Problem

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 28.07.2009, 15:35
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 28.07.2009
Beiträge: 2
Piru befindet sich auf einem aufstrebenden Ast
Standard mySQLi Abfrage Problem

Hallo,

ich bin dabei PHP zu lernen (komme von Java) und versuche grade durch ein Script eine Abfrage in meiner Datenbank durchzuführen, stoße dabei allerdings auf folgendes Problem:

Die Datensätze werden nur dann gefunden, wenn die SQL-Abfrage ohne WHERE-Clause erfolgt (da mach ich bestimmt was falsch). Aber WHERE brauche ich, denn der Sinn dieses Scripts ist es, die Datenbank nach einen speziellen Namen zu durchsuchen und die zu diesem Namen dazugehörigen Informationen zu geben, und nicht einfach alles anzuzeigen.

Hier mal das PHP-Script:

... zu erwähnen ist dass die benötigte $_POST - bzw. der zu suchende Name - durch ein HTML-Formular gepostet werden.
PHP-Code:
<?
  
@$db=new mysqli('localhost','root','<überaus sicheres passwort>','w5spieler');
  
//Connect?
  
if(mysqli_connect_errno()){
   echo 
"Verbindungsfehler...";
  }
  
$search=$_POST['spieler'];
  if(
$resultat$db->query('SELECT * FROM spieler WHERE name = $search')){
   while(
$daten=$resultat->fetch_object()){
    echo 
"<br>Name:\t ".$daten->name;
    echo 
"<br>Info:\t ".$daten->info;
   }
   
$resultat->close();
  }
  else{
  if(
$_POST['spieler']){
   echo 
"Spieler $search nicht gefunden.";
   }
  }
  
$db->close();
  
?>
Ich habe bereits versucht in der SQL Abfrage die $search durch $_POST['spieler'] zu ersetzen, erhalte dann aber die Fehlermeldung:

Zitat:
Parse error: syntax error, unexpected T_STRING in /var/www/db.php on line 43
Wenn ich die WHERE-clause weglasse zeigt er mir zwar alle Datensätze, aber das ist nicht der Zweck dieses Scripts. Wenn ich der WHERE-Clause eine Konstante Zeichenkette übergebe wird der entsprechende Datensatz auch nicht gefunden.

Da ohne WHERE alles funktioniert sind die Zugangsdaten/Tabellennamen etc. wohl nicht falsch.

Hoffentlich ist die Lösung des Problems nicht so einfach, dass ich mich schämen müsste diese Frage gestellt zu haben

Grüße,
Piru

Geändert von Piru (28.07.2009 um 15:41 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 28.07.2009, 15:45
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Innerhalb von einfachen Anführungszeichen werden Variablen nicht ersetzt.

Entweder Du setzt das Query in doppelte Anführungszeichen, oder Du arbeitest mit Stringaddition, was ich bevorzugen würde, da man so eine Variable je nach Syntax-Highlightning auch mal schnell in einem String übersehen kann.

Also, entweder:
PHP-Code:
if($resultat$db->query("SELECT * FROM spieler WHERE name = $search")){ 
oder
PHP-Code:
if($resultat$db->query('SELECT * FROM spieler WHERE name = ' $search)){ 
Ich arbeite nicht mit mysqli, daher weiß ich nicht, ob die Werte automatisch in Anführungszeichen (für mysql) gesetzt werden, falls nötig und/oder ob mysqli eine escape-Funktion unterstützt, ansonsten würde ich das noch auf
PHP-Code:
if($resultat$db->query('SELECT * FROM spieler WHERE name = \'' mysql_real_escape_string($search) . '\'')){ 
ändern.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 28.07.2009, 15:45
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.016
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

In Strings mit einfachen Anführungszeichen (Singlequotes) werden Variablen nicht interpretiert, entweder du verwendest Doublequotes, oder verkettest den String wie folgt mit der Variable:
PHP-Code:
'SELECT * FROM spieler WHERE name = ' $search 
Mit Zitat antworten
  #4 (permalink)  
Alt 28.07.2009, 15:50
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 28.07.2009
Beiträge: 2
Piru befindet sich auf einem aufstrebenden Ast
Standard

Danke für die schnellen Antworten,
das Problem ist gelöst

Grüße,
Piru
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Text neben Navigationsleiste andi01 CSS 6 08.06.2011 17:54
Design zu CSS/HTML verarbeiten - Problem häufen sich. Grafikamateur CSS 2 06.08.2007 10:57
Problem bei Abfrage von borderWidth/border code_pilot Javascript & Ajax 7 19.04.2007 17:36
Problem bei Div's - zwei mal das gleiche und doch nicht ... Niriel CSS 10 09.06.2005 18:39
Problem mit einem CSS Layout nARC CSS 20 21.05.2005 07:28


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:06 Uhr.