• This forum has a zero tolerance policy regarding spam. If you register here to publish advertising, your user account will be deleted without further questions.

Warning: mysql_num_rows()

erick

New Member
ich habe ein Problem mit mein Server er bringt mir folgenden Fehler


HTML:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/datei.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at /var/www/config.php:35) in /var/www/datei.php on line 79
Unknown column 'usertyp' in 'field list'

ich hoffe ihr könnt mir helfen
Gruß
Erick
 
Ganz einfach, die Antwort deiner Frage steht schon in der Fehlermeldung.

MySQL Meldet das es keine Spalte mit dem Namen 'usertyp' in der Tabellen Liste gibt.
 
Danke für die schnelle Antwort jetzt habe ich noch zwei fragen
1. Fehler
HTML:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/config.php:35) in /var/www/datei.php on line 79

2. Fehler
HTML:
Warning: Invalid argument supplied for foreach() in /var/www/datei.php on line 59

wie kann ich die propleme lösen
 
Englisch und googlen kannst Du aber schon, oder etwa nicht?

Die Fehlermeldungen sind eindeutig und sauber wörtlich übersetzbar.
Die Fehlermeldungen bei Google eingehämmert und 2s später erscheint die Lösung.

Das Lesen der PHP-Doku sollte auch kein Problem darstellen.

Sorry, aber das bischen Eigeninitiative darf man getrost voraussetzen...
 
keine echos oder html code vor headern ausgeben, dann funktioniert das.

Was hat das bitte mit einem Webserver zu tun? Das script ist lediglich schlampig programmiert.

Wenn du möchtest kannst du den code ja mal posten, dann kann ich mir das ansehen.
 
hier der code

HTML:
<?php 
// Session starten
session_start ();

// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("localhost", "root", ""); 
if (!mysql_select_db ("LoginSystem", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$sql = "SELECT ". 
    "Id, Nickname, Nachname, Vorname ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') AND ". 
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql); 

if (mysql_num_rows ($result) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"]; 

  header ("Location: intern.php"); 
} 
else 
{ 
  header ("Location: formular.php?fehler=1"); 
} 
?>
 
Ok und jetzt mal ganz fix den Delete-Button im FTP-Client druecken und die Datei loeschen.
Das Script ist ein echtes Musterexemplar dafuer wie man NICHT programmiert und wie man SQL-Injections baut.

Ehrlich, da Fehler zu suchen ist reine Zeitverschwendung.
 
*seufz* OK

-Um Fehler zu vermeiden alle Tabellen- und Feldnamen in backtick setzen "`"
-LIKE nur verwenden wenn auch ein Pattern-Matching benoetigt wird. "=" ist ansonten zu empfehlen
-mysql_real_escape_string() verwenden
-header("Location: ...") sollten IMMER von einem die() gefolgt werden da sonst der weitere Code ausgefuehrt wird!
PHP:
<?php 
function redirect($location) {
	header("Location: ".$location);
	die("Redirected!"); // <-- die() wichtig da ansonten der weitere Code ausgefuehrt wird! 
}

// Session starten
session_start ();

// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("localhost", "root", "") OR die("Keine Verbindung zur Datenbank"); 
mysql_select_db("LoginSystem", $connectionid) OR die("Konnte Datenbank nicht auswaehlen");

$sql = "SELECT `Id`, `Nickname`, `Nachname`, `Vorname` FROM `benutzerdaten` WHERE `Nickname` = '".mysqli_real_escape_string($_REQUEST["name"])."' AND Kennwort = '".md5($_REQUEST["pwd"])."'"; 
$result = mysql_query($sql); 

if (mysql_num_rows ($result) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result,MYSQL_ASSOC); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"]; 

  redirect("intern.php"); 
} 
else redirect("formular.php?fehler=1"); 
?>
Zu deinem Fehler:
deine config.php hat nach dem schliessenden ?> ein oder mehrere Leerzeichen respektiv Zeilenumbrueche. Entweder diese Loeschen oder kein schliessendes Tag setzen.
Die zweite Fehlermeldung ist nicht reproduzierbar da in dem von dir gegebenen Code-Teil KEINE foreach() schleife enthalten ist, diese aber eine Warnung produziert weil sie kein Array erhaelt. (Meist also entweder eine uninitialisierte (null) Variable oder ein bool/false)
 
he könntest du mir mal bitte den skript so umschreiben wie du mir das erklärt.

das währe supper der 2 fehler ist auf einer anderen seite

HTML:
foreach ($_POST['id'] as $key => $value)

$_POST['id'] ist eine checkbox

danke im foraus
Erick
 
Wie sieht der Code zur Checkbox aus?
Sie muss wie folgend aufgebaut sein:
Code:
<input type="checkbox" name="id[]" value="WERT">

Sollten die Klammern "[]" fehlen, funktioniert es nicht. Ebenfalls wenn keine Checkbox angeklickt ist, da eine Checkbox NUR uebertragen wird wenn sie aktiviert ist.
Du solltest also erstmal ein "if(is_array())" davor setzen...
 
Ich könnte an die Decke gehen auf mein alten Server hat das alles funktioniert jetzt gibt er mir bei der Checkbox aus Array

frage 1 geht auch noch nicht woder der Fehler

HTML:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/config.php:35) in /var/www/datei.php on line 3


ich habe natürlich nicht den root als Benutzer das war noch aus den tutoriell
 
Last edited by a moderator:
Wie bereits gesagt gibt /var/www/config.php Text oder mindestens ein Leerzeichen aus - ueblicherweise direkt hinter dem schliessenden ?> Tag.
Dieses einfach weg zu lassen ist eine der moeglichen Optionen.

jetzt gibt er mir bei der Checkbox aus Array
Ohne den entsprechenden Code kann man nicht viel sagen.
"Array" ist die toString-Funktion eines Arrays, bedeutet also dass statt eines erwarteten Strings,Bool,Null,Int,Double,.... ein Array vorgefunden wurde.
 
hier der Code


HTML:
<form method="post" action="">
<input type="submit" id="loechen" name="loechen" value="loechen" />
// Mysql schleife 
<input type="checkbox" name="id[]" onclick="check();" value="<?php echo $mysql['id']; ?>" />
// Mysql schleife Ende
</from>

$checkboxx = $_POST['id'];
if(is_array($checkboxx))
{
if (isset($_POST['loechen'])) 
{
foreach ($_POST['id'] as $key => $value) 

	{
echo $checkboxx;
// mysql Befehl 
}
}
}
 
Der Code in der Form kann einfach nicht funktionieren, ist das wirklich das Original?

Keine PHP-Tags, die Schleife fehlt bis auf die entsprechenden Code-Kommentare, ...
Was bitte soll ich daran jetzt sehen?

Uebrigens hast du Tippfehler im </form>
 
Was soll denn dieser hingerotzte Schnipsel? Sollen wir uns den konkreten PHP-Code, der bei dir ausgeführt wird, jetzt selbst zusammenpuzzeln und die fehlenden Stellen ergänzen?
 
Wenn sich wirklich jemand Zeit nehmen sollte, dir zu helfen; solltest du erstmal die Richtige Formatierung einhalten; dann Programmieren lernen.

Denn dieser Code kann nicht funktionieren.

Warum?

Solang du am Anfang deines PHP Scriptes Code hast der Ausgeführt wird und zu eventuellen Fehlern führen kann, wirst du diese Fehlermeldung IMMER kriegen.

Warum die Fehlermeldung jetzt erst auftaucht, liegt daran, das auf dem alten eben die display_errors Off waren.
 
Ich alle Fehler beseitigt sorry für die vielen Fragen aber der erst ist nicht mein Fehler gewesen das ist nenn tut gewesen das zweite ja habe Leerzeichen vergessen
Danke Jungs dafür dass ihr mir die ganzen fragen beantwortet habt einfach super Forum

Jetzt noch ne frage wegen mysql Injection auf was muss ich achten damit nicht Injectba ist
 
etzt noch ne frage wegen mysql Injection auf was muss ich achten damit nicht Injectba ist
Immer, immer, immer escapen. Und nicht nur mit mysql_escape_string sondern mit mysql_real_escape_string.
Es ist uebirgens empfehlenswert die OOP-Extension 'mysqli' statt 'mysql' zu benutzen.
 
Back
Top