Formular aus SELECT füllen geht nicht!

AlexD1979

Erfahrenes Mitglied
Hallo!
Es sit echt zum heulen! Ich habe alle Beispiele schon mit cut&paste in meinem Prog eignesetzt und angepasst, aber ich mache immer noch ein Fehler. Oder der Fehler liegt sogar ganz wo anders, was ich mir eigentlich nicht vorstellen kann.

Meine echo-Anfragen bleiben leer, warum auch immer!

PHP:
<?php
/* connect.php enthält die Verbindungsinformationen */
include("connect.php");
include("sql_strings.php");
include("top_navi.php");

/*Datensatz laden aus der letzten Seite, die beim Speichern übergeben wurde */
$query_data = "SELECT * FROM test_inventar.inventar WHERE INV='echo $id[nummer]'"; 
$data_erg = mysql_query($query_data, $dbh);

if (mysql_errno()) echo mysql_error();

if ($data_erg) { echo ("Daten erfolgreich geladen");}
$testt = mysql_fetch_array($data_erg);

while($row = mysql_fetch_object($data_erg))

{

echo $row->inv;
echo $row->INV;
}
echo $row->inv;
echo $row->INV;


echo $id['nummer'];		//Das funktioniert ohne Probleme! Das Feld wird mit "SELECT max(INV) AS nummer FROM" ...
echo $testt['HOST'];	// Das funktioniert NICHT Select siehe oben. Der sollte 18 Felder eines Datensatzes 
						//zurück liefern. Das Ergebnis der If-Bedingung ist TRUE also liefert er schon was 
						//zurück
 
PHP:
$query_data = "SELECT * FROM test_inventar.inventar WHERE INV='echo $id[nummer]'";  // falsch

$query_data = "SELECT * FROM test_inventar.inventar WHERE INV='".$id['nummer']."'";  // richtig
1) Da du dich bereits in PHP befindest musst du kein echo nutzen. Ein echo müsstest du nur verwenden, wenn du es explizit auf dem Bildschirm ausgeben wolltest.

2) Es ist nicht sehr schön, Variablen direkt in Strings einzubetten, deshalb wird der String unterbrochen und die Variable mit Punkten als String-Connectoren eingebettet.

3) Nicht numerische Arrayindizes sollten in Singlequotes stehen, damit ein versehentliches Nutzen von reservierten Wörtern als Key vermieden wird, was zwangsläufig zu Problem führen würde.
 
Original geschrieben von Tim Comanns
PHP:
$query_data = "SELECT * FROM test_inventar.inventar WHERE INV='echo $id[nummer]'";  // falsch

$query_data = "SELECT * FROM test_inventar.inventar WHERE INV='".$id['nummer']."'";  // richtig


Wenn Du die Variable schon ausgrenzt dann kannst du auch singlequotes verwenden, da der Parser die dann eben NICHT nochmal durchläuft.

$query_data = 'SELECT * FROM test_inventar.inventar WHERE INV=\''.$id['nummer'].'\'';

[Edit]
Nach dem INV= und nach nummer'].' jeweils einen backslash adden den das Forum leider wegparsed :(
[/Edit]
 
Original geschrieben von u-Danilo
Wenn Du die Variable schon ausgrenzt dann kannst du auch singlequotes verwenden, da der Parser die dann eben NICHT nochmal durchläuft.

$query_data = 'SELECT * FROM test_inventar.inventar WHERE INV=\''.$id['nummer'].'\'';

[Edit]
Nach dem INV= und nach nummer'].' jeweils einen backslash adden den das Forum leider wegparsed :(
[/Edit]
Aha und warum sollte ich das tun? Ich bin für einen konsistenten Stil und der sieht bei mir so aus, dass sämtliche Strings in Doublequotes kommen, es sei denn, etwaige darin enthaltene Variablen oder sonstige Metazeichen sollen nicht geparsed werden oder es handelt sich um ein Array Element.

By the way: Du machst den String mit ' auf aber mit " zu. Das ist der absolute Gipfel schlechten Geschmacks ;)
 
Zurück