Warum keine Ausgabe MSQL

hume1991

Erfahrenes Mitglied
Guten Tag zusammen,

habe folgendes Problem dass die angelegten Testdatensätze bei mir nicht angezeigt werden, obwohl online.

Hier mal die konfig. Datei

PHP:
<?php
mysql_connect("Server","Benutzer","Passwort");
mysql_select_db("Test");
//Beispiel Angaben 
?>

Hier die Datei welches die Ausgabe erscheinen soll:

PHP:
include("konfig.php") // Anfang vor HTML etc.

$sql = 'SELECT * '
        . ' FROM `test` '
        . ' WHERE 1 ';

        echo $sql;

Es sind zwei Datensätze angelegt, nun stellt sich die Frage warum keine Ausgabe erscheint.
 
Damit gibst nur das aus was in der variable $sql drin ist nämlich 'SELECT * FROM...'
Aus Programmsicht ist alles richtig

ich glaub das ist was du suchst
PHP:
$sql = 'SELECT * ' 
        . ' FROM `test` ' 
        . ' WHERE 1 ';

$query = mysql_query($sql) or die(mysql_error()); 

while($row = mysql_fetch_assoc($query)){
print_r($row);
}
 
Hi,

es erscheint sehr wohl eine Ausgabe, nur halt nicht die, die du erwartest.

Du erstellst nur einen String, der die SQL enthält und gibst diese per echo aus. Stattdessen musst du diese an die Datenbank schicken (mysql_query()), und das Ergebnis abholen (z.B. mysql_fetch_assoc())

Und auch wichtig: Am Ende der Seite, wenn du alle Abfragen durchgeführt hast, die Verbindung mit mysql_close() wieder schließen.

Wie du an der Dokumentation zu den Funktionen allerdings schon sehen kannst, solltest du eher mit mysqli arbeiten.

// Edit: Wow, da waren wohl gleich 2 Leute schneller als ich...

Grüße,
BK
 
Ok, es erfolgt folgende Ausgabe vom Bildschirm:

Array ( [vorname] => Hans [nachnme] => Schuster ) Array ( [vorname] => Peter [nachnme] => Mustermann )

Daten werden angezeigt. Wie kann ich nur die Daten anzeigen lassen?
 
Kannst du über den schlüssel ansprechen, das was in eckigen Klammern steht

PHP:
//...
while($row = mysql_fetch_assoc($query)){
echo $row['vorname'] . " " . $row['nachname'] . "<br/>";
}
/...
 
Ist der Vergleich richtig?


Korrektur
PHP:
 <?php



 $sql = 'SELECT * '. ' FROM `passwort` `pass` LIMIT 0, 30';

 if ($_POST['send'] == TRUE)
  {
 if (empty($_POST['schutz']) == TRUE
 or ($_POST['schutz']) != msql_query($sql));
 {
  echo "<p class=\"fehler2\">Falsches Passwort</p>";
 }

   }



   if ($_POST['send'] == TRUE)
  {
 if ($_POST['schutz'] == msql_query($sql));
 {
header('Location: http://www.example.com/');
 }
    }


   ob_end_flush();
 ?>

Bekomme nur eine weiße Seite angezeigt.
 
Zuletzt bearbeitet:
Sorry, aber du solltest deinen Code formatieren damit man sieht wo welche Klaemmer auf und wo welche schliesst. Deine Einrückungen sind rein Zufällig und somit ist dieser Code nicht lesbar. Kein Wunder macht er nicht das was du willst.

Formatiert sieht das so aus
PHP:
 <?php

$sql = 'SELECT * '. ' FROM `passwort` `pass` LIMIT 0, 30';
if ($_POST['send'] == TRUE){

	//Was macht das ; am Ende********
	if (empty($_POST['schutz']) == TRUE or ($_POST['schutz']) != msql_query($sql));{
		echo "<p class=\"fehler2\">Falsches Passwort</p>";
	}
}

if ($_POST['send'] == TRUE){
	//Was macht das ; am Ende********
	if ($_POST['schutz'] == msql_query($sql));{
		header('Location: http://www.example.com/');
	}
}

ob_end_flush();
?>
Schnell erkennen wir, dass du
a) if() und Befehlszeilen mischst. in 2 Zeilen ist ein ; zuviel
b) ein result mit einem Wert vergleichst. Das Resultat von mysql_query ist kein Wert den du direkt mit einem Wert vergleichen kanns. Du musst nocht mit mysql_fetch_assoc() den Wert auslesen

PHP:
$sql = 'SELECT * '. ' FROM `passwort` `pass` LIMIT 0, 30';
//SQL ausführen
$result = msql_query($sql)
//und die erste Zeile auslesen
$row = mysql_fetch_assoc($result);
//davon das Feld 'pass' auslesen
$pass = $row['pass'];

if ($_POST['send'] == TRUE){
	//und hier nur noch auf die Variable prüfen
	if (empty($_POST['schutz']) == TRUE or ($_POST['schutz']) != $pass){
		echo "<p class=\"fehler2\">Falsches Passwort</p>";
	}
}

if ($_POST['send'] == TRUE){
	if ($_POST['schutz'] == $pass){
		header('Location: http://www.example.com/');
	}
}

und ein wenig gekürzt
PHP:
$sql = 'SELECT * '. ' FROM `passwort` `pass` LIMIT 0, 30';
$result = msql_query($sql)
$row = mysql_fetch_assoc($result);
$pass = $row['pass'];

if ($_POST['send'] == TRUE){
	if(isset($_POST['schutz']) && $_POST['schutz'] == $pass){
		header('Location: http://www.example.com/');
	}else{
		echo "<p class='fehler2'>Falsches Passwort</p>";
	}
}
 
Habe wieder einen weißen Bildschirm,
bei dir ist einmal ohne Semikolon wird dann ein Fehler ausgegeben, dies funktioniert also nur wenn man ein Semikolon setzt.


PHP:
<?php
$sql = 'SELECT * '. ' FROM `passwort` `pass` LIMIT 0, 30';

$ergebniss = msql_query($sql); //Semikolon bei dir ohne? Fehlergebniss
$row = mysql_fetch_object($ergebniss);
$pass = $row['pass'];

if ($_POST['send'] == TRUE)
{

if (empty($_POST['schutz']) == TRUE or ($_POST['schutz']) != $pass)
echo "<p class=\"fehler2\">Falsches Passwort</p>";

{

if ($_POST['send'] == TRUE)
{
if ($_POST['schutz'] == $pass)

{

 header('Location: http://www.example.com/');
}

}

}
}



   ob_end_flush();
 ?>
 
Zuletzt bearbeitet:
Zurück