PHP MySQL Datenbank Abfrage Problem

Nizomi

Mitglied
Hallo,

Ich habe mir jetz mal eine kleine Seite gemacht und wollte eine Umfrage bauen.
Gut der Code zur Abfrage der Daten von der Umfrage:
PHP:
<?php
$bow1ea="SELECT v1 FROM vote";
$bow1e=mysql_query($bow1ea);
$bow2ea="SELECT v2 FROM vote";
$bow2e=mysql_query($bow2ea);
$bow3ea="SELECT v3 FROM vote";
$bow3e=mysql_query($bow3ea);
$bow4ea="SELECT v4 FROM vote";
$bow4e=mysql_query($bow4ea);
$bow5ea="SELECT v5 FROM vote";
$bow5e=mysql_query($bow5ea);
print "<b>UMFRAGE:<b><br>Welchen Bow soll ich nehmen?<br><br>Ergebnisse:<br>Bow1: $bow1e<br>Bow2: $bow2e<br>Bow3: $bow3e<br>Bow4: $bow4e<br>Bow5: $bow5e";
mysql_free_result($bow1e);
mysql_free_result($bow2e);
mysql_free_result($bow3e);
mysql_free_result($bow4e);
mysql_free_result($bow5e);
?>

Er is in einer HTML-Datei und die Tabelle habe ich auch angelegt. Aber als Ausgabe bekomme ich nur:
Code:
UMFRAGE:
Welchen Bow soll ich nehmen?

Ergebnisse:
Bow1: Resource id #2
Bow2: Resource id #3
Bow3: Resource id #4
Bow4: Resource id #5
Bow5: Resource id #6

Meine Frage: Warum steht da Resource id #2 und so und nciht die Umfragedaten?
 
Bei der Ausgabe schreibst Du immer nur $bow1e usw. hinaus. Du musst aber noch angeben, welches Feld ausgegeben werden soll. Schaut dann so aus:

Code:
echo $bow1e["v1"];
echo $bow2e["v2"];

Nitro
 
Geht nicht.
Wenn ich es so mache kommt:
Code:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /var/www/web143/html/sacredw.php on line 25
Und in allen PHP-Tutorien die ich bisher gelesen habe stand das auch nicht.
 
1) Schonmal was davon gehört, dass man mehrere Felder aus einer Tabelle in einem Query abfragen kann?

2) Schonmal was davon gehört, dass mysql_query einen result-Handler zurück gibt, den man mit mysql_fetch_row oder mysql_fetch_array weiterverarbeiten muss? Steht auch wunderbar auf der PHP Seite (http://www.php.net/mysql_query). Ich zitiere:

resource mysql_query ( string Anfrage [, resource Verbindungs-Kennung])
und
Nur für SELECT, EXPLAIN, SHOW oder DESCRIBE Anweisungen liefert mysql_query() eine Ressourcen-Kennung oder FALSE, falls die Anfrage nicht korrekt ausgeführt wurde. Für alle anderen SQL Anweisungen ist der Rückgabewert von mysql_query() im Erfolgsfall TRUE, im Fehlerfall FALSE. Ein Rückgabewert ungleich FALSE bedeutet, dass die Anfrage gültig war und vom Server ausgeführt werden konnte. Das alleine sagt jedoch überhaupt nichts über die Anzahl veränderter oder gelieferter Datensätze aus. Es ist durchaus möglich, dass eine Anfrage erfolgreich war, ohne einen einzigen Datensatz zur verändern oder zu liefern.
Es macht also durchaus Sinn, sich erstmal ein wenig zu informieren, oder gar ein Buch zu kaufen, wenn man eine Programmiersprache lernen will.
 
Und weil heute schönes Wetter ist, hier ein Codeschnipsel:
PHP:
<?php 
$sql = mysql_query("SELECT v1, v2, v3, v4, v5 FROM vote");
$row = mysql_fetch_array($sql);
echo '<b>UMFRAGE:<b><br>Welchen Bow soll ich nehmen?<br><br>Ergebnisse:<br>Bow1: '.$row['v1'].'<br>Bow2: '.$row['v2'].'<br>Bow3: '.$row['v3'].'<br>Bow4: '.$row['v4'].'<br>Bow5: '.$row['v5'];
?>
 
Hallo... ...ich schliesse mich mal dieser lustigen runde an...
Ich habe das gleiche Problem wie Sheep. Ich habe meinen
Code nun nach den obenstehenden Anweisungen(ludz) verändert,
doch bei mir steht nix in der Ausgabe.

Nachtrag:
Ich habe eine Lösung gefunden. Ich möchte nun wissen ob die nur gepfuscht
oder ok ist. >>zugefügte Zeilen<<(neu) , ###entfernte Zeilen###(original)


Code sieht wie folgt aus:

PHP:
<?php

$bn = $HTTP_POST_VARS["benutzername"];
$pw = $HTTP_POST_VARS["passwort"];

$abfrage = "SELECT 'kdnr' FROM tbl_passwort WHERE benname='$bn' AND passwort='$pw';";

$verbindung = @mysql_connect("localhost","root","12345");
mysql_select_db("profil",$verbindung);

$rgw = mysql_query($abfrage,$verbindung);

>>$rid = mysql_fetch_row($rgw);<< neu

###if (mysql_fetch_array ($rgw) == FALSE) ### ersetzt

>>if ($rid == FALSE)<< neu
	{
         echo '<div align="center">';
         echo 'Benutzername oder passwort falsch!';
         echo '	<form action ="index.php" method="post">';
         echo '		<input type="Submit">';
         echo '	</form>';
         echo '</div>';
	}
else
         {

>>list($wert)= $rid;<< neu

         echo'######################################<br>';
###echo'test: '.$rgw['kdnr'].'<br>';### ersetzt

>>echo"test: $wert <br>";<< neu

         echo'######################################<br>';
         echo 'angenommen';
         }


mysql_close($verbindung);

?>

in der Ausgabe steht nun:

######################################
test:
######################################
angenommen

sollte aber stehen:

######################################
test: asdfg
######################################
angenommen

Was mache ich falsch?
 
Zuletzt bearbeitet von einem Moderator:
Schonmal anstatt
PHP:
echo"test: $wert <br>";
das probiert:
PHP:
echo 'test: ' . $rid[0] . '<br>';
?

Ansonsten hättest du das Ganze auch gleich so machen können:
PHP:
list($wert) = mysql_fetch_row($rgw);

//anstatt
//$rid = mysql_fetch_row($rgw);
//[...]
//list($wert)= $rid;

Ich sehe auch gerade, dass dein Query u.U. Probleme machen könnte. Wenn du das Feld kdnr auslesen willst, dann lässt du entweder die halben Anführungszeichen weg oder setzt den Feldnamen in Backticks ( ` ).
Probier also mal folgendes:
PHP:
$abfrage = "SELECT `kdnr` FROM `tbl_passwort` WHERE `benname` = '" . $bn . "' AND `passwort` = '" . $pw . "'";
 
Danke für die Hilfe im Punkt Eins und Drei.

Original geschrieben von ludz
...
Ansonsten hättest du das Ganze auch gleich so machen können:
PHP:
list($wert) = mysql_fetch_row($rgw);

//anstatt
//$rid = mysql_fetch_row($rgw);
//[...]
//list($wert)= $rid;
Aber auf die Variable $rid in Punkt Zwei kann ich nicht verzichten,
da ich das Ergebnis zwei mal gebrauche (IF-Anweisung und im Echo). Würde ich sie nochmal mit mysql_fetch_row() ausgeben würde ich ja einen zweiten Datensatz auslesen und weil nur einer da ist würde er mit ein FALSE zurückgeben oder im fehlerfall auf den falschen Datensatz zurückgreifen.
 
Zuletzt bearbeitet von einem Moderator:
Wie wäre es in der IF-Abfrage mit
PHP:
if (mysql_num_rows($rgw) < 1) {
[...]
}

Ach und modifiziere doch bitte dein Query mal meinem Beispiel entsprechend.
 
Aber rufe ich damit nicht schon den nächsten DS auf?

Ist doch so:

mysql_num_rows($rgw) --> 1. aufruf --> Rückgabe: 1.DS
mysql_num_rows($rgw) --> 2. aufruf --> Rückgabe: 2.DS

Oder liege ich da falsch?

Wenn ich richtig liege würde ich dann ja auf zwei völlig unterschiedliche DS zugreifen bzw. eine Fehlermeldung erhalten.
 
Zurück