Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

gelöst: Variablen in db_query Abfragen

Eingetragen von Aridan (4)
am 18.08.2008 - 19:59 Uhr in
  • Allgemeines zu Drupal
  • Drupal 6.x

Hallo Leute :)

ich hab da ein kleines Problem bei einer Abfrage einer eigens erstellten Tabelle.
Drupal 6.3 deutsche Version.

Ich möchte eine Seite erstellen in der eine oder mehrere Zeilen ausgegeben werden.
Und zwar Userspezifische.
Dazu habe ich eine Tabelle erstellt (in der selben DB, in der auch Drupal installiert wurde).

Der Inhalt beschränkt sich derzeit auf den Usernamen und ein paar Testwerten und ist in etwa so aufgebaut

account wert01 wert02
hans 1 5
peter 5 3

ich möchte nun also, dass der jeweils eingeloggte user nur seine eigenen "Daten" angezeigt bekommt.

Ich habe auch ein Script gefunden, das dies generell ausgibt. Aber nur wenn ich den Usernamen hardcodiert eintrage.
Egal was ich anstelle ich bekomme es nicht hin dies über eine Variable auslesen zu lassen.

Hier der Codeschnipsel den ich dazu verwende:

<?php
  $header
= array('account', 'wert01', 'wert02');
 
$rows = array();
 
$sql = 'SELECT * FROM {test01} where account = "hans"';
 
$res = db_query($sql);
  while (
$row = db_fetch_array($res)) {
   
$rows[] = $row;
  }
  print
theme('table', $header, $rows);
?>

Dies funktioniert so auch super, aber halt wie gesagt nur hardcodiert.
Nicht selbst erstellt, nur ersucht :) ich bin selbst noch am Anfang und versuche zu lernen.

Desweiteren habe ich gefunden, dass man den aktuell angemeldeeten User mittels $user->name abfragen kann
Also habe ich in dem oben angegebenen Script versucht dies irgendwie einzubauen.
Ausgeben kann ich den Usernamen auch (keine Ahnung ob dieses "Übersetzen" in eine neue Variable überhaupt notwendig ist (hab ich mal irgendwo gesehn :) )

global $user;
$_useracc = $user->name;
print $_useracc;

jedoch erhalte ich hierbei immer folgendes:
user warning: Unknown column '$_useracc' in 'where clause' query: SELECT * FROM drupal_test01 WHERE account = $_useracc

Die Variable wird also nicht als solche erkannt sondern einfach als Text übergeben.

Auch habe ich schon folgendes probiert:

  $sql = 'SELECT * FROM {test01} where account = $_useracc ';
  $res = db_query($sql);

duch

  $res = db_query("SELECT * FROM {test01} where account = $_useracc");

ausgetauscht.

Hierbei wird lustigerweise die Variable korrekt eingesetzt. Jedoch erhalte ich dennoch eine ähnliche Fehlermeldung:

user warning: Unknown column 'hans' in 'where clause' query: SELECT * FROM drupal_test01 WHERE account = hans

ich kann mir das ehrlich gesagt nicht erklären, überall werden Variablen verwendet, nur an der Stelle scheint es nicht zu funktionieren.

Ich habe schon recht intensiv nach einer Lösung hier gesucht aber nichts passendes gefunden leider.

Sorry für den vielen Text, aber ich wollte es so genau wie möglich beschreiben.

‹ [gelöst] Unterschied im Pfad zw. [title] und [title-raw] [gelöst] Alert-Meldung wird unterdrückt. - Wieso? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

gelöst

Eingetragen von Aridan (4)
am 19.08.2008 - 09:42 Uhr

so habs nun doch selbst ergoogelt :)

War echt nicht leicht zu finden.

Für alle die es intressiert.

hier der korrekte code:

<?php
  $header
= array('account', 'wert01', 'wert02');
 
$rows = array();
 
$sql = "SELECT * FROM {test01} where account = \"$user->name\"";
 
$res = db_query($sql);
  while (
$row = db_fetch_array($res)) {
 
$rows[] = $row;
  }
  print
theme('table', $header, $rows);
?>

Man muss also selbst die Variable in doppelte Hochkomma setzen und scheinbar diese doppelten Hochkommas maskieren.

Ahso, ausserdem dürfen SQL Abfragen mit Variablen nicht in einfachen hochkommas stehen, da darin Variablen generell nicht umgesetzt werden.

Ausserdem muss man vorher das $user->name auch nicht in eine Variable "umleiten" funktioniert direkt.
Ob das gut ist kann ich leider nicht sagen. Wer etwas dazu sagen kann , immer her damit :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Per Zufall darauf gestossen.

Eingetragen von Berdir (10)
am 07.02.2011 - 15:45 Uhr

Per Zufall darauf gestossen. Ist alt, aber vielleicht liest das noch jemand.

Nein, das ist nicht gut!

*IMMER* platzhalter verwenden bei Queries:

<?php
  $sql
= "SELECT * FROM {test01} where account ='%s'";
 
$res = db_query($sql. $user->name);
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 1 Tag
  • Hey danke
    vor 2 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 20 Stunden
  • Da scheint die Terminologie
    vor 3 Wochen 23 Stunden
  • Kannst doch auch alles direkt
    vor 3 Wochen 5 Tagen
  • In der entsprechenden View
    vor 3 Wochen 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 5 Tagen
  • gelöst
    vor 6 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 21 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association