if/else funktionert nicht
Tim
- php
0 Vinzenz Mai0 MudGuard0 Daniel
Morgen,
ich habe grade eine kleine PHP Datei geschrieben. Sie soll gucken ob eine Tabelle vorhanden ist:
<html>
<body>
<?php
include("help.php");
if(isset($_POST["undweg"]))
{
session_start();
echo"<form action = "$PHP_SELF" method = "post">";
$dbh = connect("abschluss");
echo "Tabellenname: ". $_POST["tabellenname"]. "<br>";
$sql = "SELECT * FROM ". $_POST["tabellenname"]. ";";
echo "SQL Befehler: ". $sql. "<br>";
// phpinfo();
$result = db_query($sql,$dbh);
if(mysql_num_rows($result) > 0)
{
$_SESSION["status"] = $_POST["tabellenname"];
echo "Tabelle ist vorhanden<br>";
}
else
{
$_SESSION["status"] = "Fehler";
echo "Tabelle ist nicht vorhanden<br>";
}
echo "$_SESSION: ".($_SESSION["status"])."<br>";
echo "</form>";
}
else
if(($_SESSION["status"] != "Fehler") && ($_SESSION["status"] == true))
{
echo"Ausgabe:<br> <br>";
}
else
{
echo"<form action = "$PHP_SELF" method = "post">";
echo "Tabellenname: ";
echo "<input type = "text" name = "tabellenname">";
echo "<input type = "submit" name = "undweg">";
echo "</form>";
}
?>
</body>
</html>
Leider geht das Programm NIE in diese else Anweisung:
if(mysql_num_rows($result) > 0)
{
$_SESSION["status"] = $_POST["tabellenname"];
echo "Tabelle ist vorhanden<br>";
}
else
{
$_SESSION["status"] = "Fehler";
echo "Tabelle ist nicht vorhanden<br>";
}
Kann mir jemand sagen warum?
Ich bin über jede HIlfe dankebar.
Eine gute Nacht noch ;)
Tim
Hallo Tim
ich habe grade eine kleine PHP Datei geschrieben. Sie soll gucken ob eine Tabelle vorhanden ist:
Aha. Wenn eine Tabelle neu angelegt ist und noch keine Datensätze enthält, so wäre sie nach Deinem beabsichtigten Vorgehen nicht vorhanden :-(
Du solltest stattdessen mysql_list_tables() verwenden.
Ausserdem ist es eine gute Idee, Daten, die aus Formularfeldern stammen _niemals_ ungeprüft in ein SQL-Statement zu übernehmen, SQL-Injection läßt grüßen. Zu diesem Thema gab es hier im Forum schon viele Diskussionen, die solltest Du mit dem von mir gelieferten Stichwort finden können.
Freundliche Grüße
Vinzenz
Hi,
$sql = "SELECT * FROM ". $_POST["tabellenname"]. ";";
$result = db_query($sql,$dbh);
Sollte die Tabelle nicht existieren, ist $result false.
D.h. daß Dir
if(mysql_num_rows($result) > 0)
das hier eine Fehlermeldung liefern müßte ("not a valid query result" oder so ähnlich).
Auf welche (zu niedrige) Stufe hast Du das Error Reporting eingestellt, daß Du diese Meldung nicht siehst?
Statt die Anzahl der Zeilen in der Tabelle abzuprüfen (was ja sowieso unsinnig ist, siehe Vinzenz), solltest Du hier prüfen, ob $result false ist oder nicht.
cu,
Andreas
Hi,
$dbh = connect("abschluss");
$sql = "SELECT * FROM ". $_POST["tabellenname"]. ";";
$result = db_query($sql,$dbh);
fällt dir nicht auf das da etwas fehlt? also bei mir sieht das standardmässig und verkürzt so aus:
$dbcnx = @mysql_connect($host, $user, $pwd);
mysql_select_db($db);
$sql = "SELECT * FROM $tabelle";
$result = mysql_query($sql);
siehst du jetzt was dir fehlt?
MfG