[PHP/Mysql] Code vergleichen - Fehler

  • Huhu,


    ich hab jetzt schon seit einer ganzen Weile ein nerviges Problem was ich nicht lösen kann.
    Beim absenden einer Bewerbung wird ein Code generiert. Dieser wird bei der Bewerbung in der Datenbank mit gespeichert.


    Dann gibt es eine weitere Seite wo man den Code eingeben kann und anhand dieses Codes (bestehend aus einer Zahlen-Buchstabenkombination der Länge von 5)
    soll man dann den Status der Bewerbung auslesen können. (Angenommen, Abgelehnt,...)


    Mein Problem ist: Das funktioniert nur bei Codes die ausschließlich Zahlen enthalten.
    Bei Codes wo Buchstaben dabei sind funktioniert es nichtmehr, dann kommt ein MySQL Fehler:


    Code
    Warning:  mysql_fetch_array() expects parameter 1 to be resource, boolean given in /users/sampserver/www/cp.php on line 77


    Das hier ist der Teil wo es mit dem Code abgefragt werden soll.
    Ganz oben wird noch die verbindung zur Datenbank hergestellt.


    PHP
    <div id="content">	<form method="POST">		<input type="text" name="enter" value="Dein Code" onclick="  if (this.value == 'Dein Code') this.value = '';" onblur="  if (this.value == '') this.value = 'Dein Code';"><br><br>		<input type="submit" name="submit" value="Bewerbung checken">	</form>	<?php	if(isset($_POST['submit']))	{		$code =  mysql_real_escape_string($_POST["enter"]);    	$sql = "SELECT * FROM bewerbungen WHERE code =".$code;		$db_erg = mysql_query( $sql );		if ( ! $db_erg )		{			echo('Bitte gib einen gültigen Code ein.');		}		while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))		{			if($zeile['verarbeitet']==0) { $stats = 'Deine Bewerbung wurde noch <b>nicht bearbeitet</b>. Bitte Gedulde dich noch etwas.'; }			if($zeile['verarbeitet']==1) { $stats = 'Deine Bewerbung ist in <b><font color="orange">Bearbeitung.</font></b> Bitte Gedulde dich noch etwas.'; }			if($zeile['verarbeitet']==2) { $stats = '<b><font color="green">Herzlichen Glückwunsch.</font></b><br>Deine Bewerbung wurde angenommen. Bitte verbinde dich auf unseren Teamspeak. <br>IP: <a href="ts3server://aufstreife.teamspeak.de">aufstreife.teamspeak.de</a><br>Warte einfach in der Eingangshalle bis ein zuständiger Ausbilder dich zum Interview moved.'; }			if($zeile['verarbeitet']==3) { $stats = 'Es tut uns Leid dir mitteilen zu müssen, dass deine Bewerbung <b><font color="red">abgelehnt</font></b> wurde.<br> Vielleicht klappts ein ander mal.'; }			echo $stats;		}	}	?>


    In der Datenbank wird es als varchar(5) gespeichert.
    Beim auslesen des input texts hab ich es so wie oben versucht ($code = mysql_real_escape_string($_POST["enter"]);) und auch vorher schon ohne mysql_real_escape_string();


    Weiß jmd. was den Fehler verursacht?


    - Tom :thumbup:

  • Dein Query ist fehlerhaft:

    PHP
    $sql = "SELECT * FROM `bewerbungen` WHERE `code` = '".$code."'";


    So müsste das eig aussehen.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Der Error sagt, dass $db_erg == false ist.
    Das bedeutet, dass die SQL-Query keinen Wert zurückgegeben hat.
    Also entweder es liegt an den fehlenden Apostrophen beim String "code" oder in deiner Tabelle existiert kein Eintrag mit diesem Code.

    Professioneller Webentwickler.

  • Zitat

    getUser();" linkhref="'index.php?page=Thread&postID=1662963#post1662963'" class="wysiwygQuote container-4">Dein Query ist fehlerhaft:

    PHP
    $sql = "SELECT * FROM `bewerbungen` WHERE `code` = '".$code."'";


    So müsste das eig aussehen.

    Vielen Dank du hast mich gerettet. :thumbup:


    - Tom :thumbup: