Abfrage-Fehler

Godstyle

Erfahrenes Mitglied
Hallo leute,

Habe einen kleinen script fehler:

PHP:
<?php
     $result = mysql_query ("select * from mail where emp_user = '".$name."' AND status = ungelesen ");
          $anzahl = mysql_num_rows($result);

?>
<a href="index.php?sub=pn">PN-Center</a> (<?php echo $anzahl; ?>) <br />

wenn ich

PHP:
 AND status = ungelesen

weg nehme, dann funktioniert das script, wie kann ich denn die 2te abfrage bedingung noch ans laufen bekommen?(schreibfehler ausgeschlossen).

Fehlermeldung:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\index.php on line 29

lg Godstyle


sry, falsches Forum, kann es jmd verschieben? ich kann es leider nicht.

lg
 
Danke,

das script funktioniert nun, kann man mir evt noch beantworten, ob das ` zeichen eine bedeutung hat?
Das script funktioniert auch ohne dieses, jedoch sehe ich es inzwischen schon immer öfters.

lg

wenn keine antowrt kommt setze ich das Thema in 15 min auf erledigt.
 
Hallo,

ihr konntet mir hier schon einmal klasse helfen, nun habe ich das selbe script erweitert und erhalte erneut einen abfrage fehler:


PHP:
<?php
		
		$file = "\db.php";
$connection = require dirname(__FILE__) .$file;
if ($connection) {
$nick = $_POST['username'];
$sql = "SELECT  id FROM user WHERE passwort = '".MD5($_POST['passwort'])."' AND `user` = '$nick'";
$result = mysql_query($sql) OR die(mysql_error()." => ".mysql_errno());
if (mysql_num_rows($result)) {

$rows = mysql_fetch_assoc($result);

$_SESSION['ID'] = $rows['id'];
$_SESSION['PASS'] = $rows['passwort'];
$_SESSION['USERNAME'] = $rows['user'];

}


}
else {
echo "Couldn't ".$file."!";
}
		if (isset($_SESSION['ID'])) {
?>
<?php
     $result = mysql_query ("select * from `mail` WHERE `emp_user` = ".$_SESSION['USERNAME']." AND `status` = 'ungelesen' ");
          $anzahl = mysql_num_rows($result);
?>
<td>Freunde (1) | Chat (1)</td>
<td colspan="5" align="right">Anfragen (0) | Benachrichtigungen (0) | Nachrichten (<?php echo $anzahl; ?>) | <a href="index.php?opt=logout" style="text-decoration:none;"><font size="-1" color="#000000"">Logout</font></a>   </td>         
  <?php          

		}
		else {

Der fehler liegt in folgendem bereich:

PHP:
<?php
     $result = mysql_query ("select * from `mail` WHERE `emp_user` = ".$_SESSION['USERNAME']." AND `status` = 'ungelesen' ");
          $anzahl = mysql_num_rows($result);
?>

meiner meinung nach ist es ein fehler in der session, aber ich weiß nicht genau welcher.

lg

Fehlermeldung:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\
 
Paar Sachen zu deinem Code:

  • Niemals Passwort in die Session
  • Niemals Session ungeprüft in ein Query

Dein neuer Code:

PHP:
<?php

function db_query($q){
	
// funktion zum queryen ^^

$result = mysql_query($sql);

if($result){
	return $result;
}else{
	echo "Datenbankfehler. <br><br>SQL: <pre>".$q."</pre>"."<br>Fehler:<pre>".mysql_error()."</pre>";

die();
}

}

	$file = "\db.php";
	$connection = require dirname(__FILE__) .$file;
	// ich gehe davon aus, dass hier true returnt wird, wenn die db geklappt hat+

	if ($connection) {
		$nick = mysql_real_escape_string($_POST['username']);
		$passwort = md5($salt.$_POST['passwort']);

		$sql = "SELECT `id` FROM `user` WHERE `passwort` = '$passwort' AND `user` = '$nick'";
		$result = db_query($sql);

		if (mysql_num_rows($result)) {
			$rows = mysql_fetch_assoc($result);
			$_SESSION['ID'] = $rows['id'];
			$_SESSION['USERNAME'] = $rows['user'];
// Hier noch eine kombi setzen, die den benutzer einzigartig macht (mit passwort drin), z.b. md5(passwort.$salt2.usernme.id.$salt3), und den benutzer so identivizieren
$_SESSION["kombi"] = md5($rows["passwort"].$salt2.$rows['user']);


}

else{
	die( "kein zugang.");
	
}





}

else {

echo "Couldn't open ".$file."!";

}

//hier dann die kombi oben abtesten, btw. auf anderen seiten dann auch so -> kein 2ter login

$nick = mysql_real_escape_string($_SESSION['username']);
	

		$sql = "SELECT `id` FROM `user` WHERE `user` = '$nick'";
		$result = mysql_query($sql) OR die(mysql_error()." => ".mysql_errno());

		if (mysql_num_rows($result)) {
			$rows = mysql_fetch_assoc($result);
			$user = ['USERNAME'] = $rows['user'];
$passwort = $rows["passwort"];


}

$ueberpruefung = md5($passwort.$salt2.$user);

  if ($ueberpruefung) {

$username = $_SESSION['username'];

$sql = "SELECT * FROM `mail` WHERE `emp_user` = ".$_SESSION['USERNAME']." AND `status` = 'ungelesen' ";

     $result = db_query ($sql);
    $anzahl = mysql_num_rows($result);

?>

(Hier kommt dann <td>Freunde etc.)
 
Hallo,

ich habe dein script versucht anzuwenden, zu beginn erhielt ich direkt eine fehlermeldung. line 67
habe dann ['USERNAME'] um $_SESSION erweitert und nun erhalte ich folgendes:

Datenbankfehler.

SQL:
SELECT `id` FROM `user` WHERE `passwort` = 'd41d8cd98f00b204e9800998ecf8427e' AND `user` = ''
Fehler:
Query was empty

finde es auch verständlich, da nun keine eingaben mehr vorliegen...

ich habe nun mein eigenes script um die pass session erleichtert, da sie eh nicht verwendet wird. Die User unterscheide ich anhand der ID, diese ist doch auch einmalig.

Gibt es denn noch etwas außer der session pass, was ich nicht einsetzen sollte?

aktuelles (funktionierendes) script:

PHP:
<?php	
$file = "\db.php";
$connection = require dirname(__FILE__) .$file;
if ($connection) {
$nick = $_POST['username'];
$sql = "SELECT  id, passwort, user FROM user WHERE passwort = '".MD5($_POST['passwort'])."' AND `user` = '$nick'";
$result = mysql_query($sql) OR die(mysql_error()." => ".mysql_errno());
if (mysql_num_rows($result)) {

$rows = mysql_fetch_assoc($result);

$_SESSION['ID'] = $rows['id'];
$_SESSION['USERNAME'] = $rows['user'];

}


}
else {
echo "Couldn't ".$file."!";
}
		if (isset($_SESSION['ID'])) {
?>
<?php
     $result = mysql_query ("select * from `mail` WHERE `emp_user` = '".$_SESSION['USERNAME']."' AND `status` = 'ungelesen' ");
          $anzahl = mysql_num_rows($result);
?>
 
Zurück