Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   WHERE-Teil einer SQL-Abfrage in php führt zu 'Parse Error' (https://www.delphipraxis.net/64776-where-teil-einer-sql-abfrage-php-fuehrt-zu-parse-error.html)

Matze 8. Mär 2006 08:03


WHERE-Teil einer SQL-Abfrage in php führt zu 'Parse Error'
 
Hallo,

irgendwie stehe ich gerade auf dem Schlauch. Ich erhalte diese Meldung

Zitat:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in [...]
bei dieser SQL Abfrage

Code:
[color=#FF9000]// list categories and products[/color]
[color=#141784][b]foreach[/b][/color] ([color=#1BA51E]$prod_cats[/color] as [color=#1BA51E]$prod_cat[/color])
{
  [color=#1BA51E]$arr_products[/color] = get_sql_array([color=#DA1F1F]"SELECT id, prod_article_no, prod_title,
    prod_price FROM "[/color] . PRODUCTS . [color=#DA1F1F]" WHERE prod_cat_id = [/color][color=#1BA51E]$prod_cat['id'][/color][color=#DA1F1F]"[/color]);
Das Array $prod_cats sieht so aus:

Code:
[color=#1BA51E]$prod_cats[/color] = get_sql_array([color=#DA1F1F]"SELECT * FROM "[/color] . PRODUCT_CATEGORIES);
Setze ich hier

Code:
[color=#DA1F1F]" WHERE prod_cat_id = [/color][color=#1BA51E]$prod_cat['id'][/color][color=#DA1F1F]"[/color]);
jedoch einen festen Wert ein, funktioniert es. Ich habe mir $prod_cat['id'] auch mit echo ausgeben lassen und es zeigt mir ordentlich die ID an. Wo liegt denn mein Denkfehler? :stupid:

mkinzler 8. Mär 2006 08:06

Re: WHERE-Teil einer SQL-Abfrage in php führt zu 'Parse Erro
 
Der Fehler liegt höchstwahrscheinlich woanders nämlich bei der Variable PRODUCTS ohne $
Zitat:

Code:
/ list categories and products
foreach ($prod_cats as $prod_cat)
{
  $arr_products = get_sql_array("SELECT id, prod_article_no, prod_title,
    prod_price FROM " . PRODUCTS . " WHERE prod_cat_id = $prod_cat['id']");

ändere mal in
Code:
/ list categories and products
foreach ($prod_cats as $prod_cat)
{
  $arr_products = get_sql_array("SELECT id, prod_article_no, prod_title,
    prod_price FROM " . $PRODUCTS . " WHERE prod_cat_id = $prod_cat['id']");

Daniel 8. Mär 2006 08:06

Re: WHERE-Teil einer SQL-Abfrage in php führt zu 'Parse Erro
 
Die einfachen Anführungszeichen in Deinem Array verwirren ihn.

Du könntest jetzt versuchen, die Dinger dort zu "escapen" oder den String zu zerteilen:

Code:
$sql = "select * from users where user_id=" .$data['wuppdi']. " AND user_level = ADMIN"

Matze 8. Mär 2006 08:09

Re: WHERE-Teil einer SQL-Abfrage in php führt zu 'Parse Erro
 
Moin,

@mkinzler: nene, das passt schon:

Code:
define([color=#E20909]'PRODUCTS'[/color], [color=#E20909]'site_products'[/color]);
@Daniel: Ich danke Dir, es geht. :firejump: Ich habe es getrennt und mit dem Punkt verbunden, wie in deinem Beispiel. Da hätte ich den Fehler ja als letztes gesucht.

joachimd 8. Mär 2006 11:44

Re: WHERE-Teil einer SQL-Abfrage in php führt zu 'Parse Erro
 
Zitat:

Zitat von Matze
@Daniel: Ich danke Dir, es geht. :firejump: Ich habe es getrennt und mit dem Punkt verbunden, wie in deinem Beispiel. Da hätte ich den Fehler ja als letztes gesucht.

Ein wirklich sehr verbreiteter Fehler: Deine Funktion wird nicht ausgeführt, weil sie innerhalb eines Strings steht. Um solche Fälle in Zukunft zu vermeiden, erstelle das SQL-Statement in eine lokale Variable und verwende diese zur Ausführung (dann kannst Du Dir das SQL nämlich zu Debug-Zwecken auch vorher mal ausgeben lassen!).

sakura 8. Mär 2006 12:21

Re: WHERE-Teil einer SQL-Abfrage in php führt zu 'Parse Erro
 
@Matze: Die Farben sind ja schön, aber Du kennst schon das [xml]-Tag der DP? Nicht so schön bunt, aber einfach zu nutzen ;)

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz