sql und php problem

BerlinerBaer

Mitglied
Hi, ich habe ein Problem. Mal wieder :(

Ich arbeite derzeit an einer etwas anderen version eines Onlineshops.

Man soll nun das, was man anbieten will, ändern können. Doch irgendwie klappt das nicht, was ich will.

Ich zeig euch einfach die Fehlermeldung und den Code:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

Laut der Fehlermeldung müsste der Fehler sich hier befinden:
PHP:
	$aendern = "UPDATE bt_inserat
	SET `ich` = '$ich' , `kb` = '$kb' , `lb` = '$lb' , `zustand` = '$zustand' WHERE id =".$_GET['id'];
	$update = mysql_query($aendern) or die(mysql_error());

Den Fehler habe ich dort auch schnell gefunden. Da habe ich schon mehrere Möglichkeiten versucht, aber mir viel bisher nichts brauchbares ein. Hab die Anführungsstriche weggelassen, habe dann wieder zwei weitere eingetragen, und so weiter. Habe wirklich so einiges schon ausprobiert.


PHP:
<?php
session_start();
include ('fehler.php');
?>






<?php

include ('config.php');

if($speichern)
	{
   if (isset($_POST['regeln']) && $_POST['regeln'] != "")
      {
	  
	  
echo "<h3>Inserat bearbeiten (Schritt 3)</h3>";	  
	  


	$ich = $_POST['ich'];
    $lb = $_POST['kb'];
	$kb = $_POST['lb'];
	$zustand = $_POST['zustand'];

	$aendern = "UPDATE bt_inserat
	SET `ich` = '$ich' , `kb` = '$kb' , `lb` = '$lb' , `zustand` = '$zustand' WHERE id =".$_GET['id'];
	$update = mysql_query($aendern) or die(mysql_error());
	echo "
	
<br />

<table align='center' width='400'>
	<tr>
		<td class='haupt'>
			Deine Daten wurden erfolgreich geändert.
		</td>
	</tr>
</table>

<br />";
	  }

   }

?>






<h3>Inserat bearbeiten (Schritt 2)</h3>
<br />

<form action='index.php?page=bearbeiten1' method='post'>
<table align='center' width='400'>
	<tr>


<?php
// ########################################### DATENBANK ##########################################
$sql = "SELECT * FROM `bt_inserat` WHERE `id`=".$_GET['id'];
$loesung = mysql_query($sql);
$ausgabe = mysql_fetch_assoc($loesung) or die(mysql_error());

   $datum = date("d.m.Y", $ausgabe['datum']);

if($ausgabe['name']==$username)
   {
   
   
   
   
   /* START DER AUSGABE FÜR SUCHE */
	if($ausgabe['ich']==suche)
    	{ echo "		
		<td widtd='40%'>Ich ...</td>
		<td widtd='60%' align='center'>".$ausgabe['ich']."</td></tr>"; }
	else
		{ echo "		
		<td widtd='40%'>Ich ...</td>
		<td widtd='60%' align='center'>
			<select name='ich' style='width:158px;'>
				<option value='verschenke' selected='selected'>... verschenke</option>
				<option value='tausche'>... tausche</option>
			</select>
		</td></tr>"; }
	/* ENDE DER AUSGABE FÜR SUCHE */
		
		
		
		
		
echo "<tr>	
	
	
		<td>Kategorie:</td>
		<td align='center'>".$ausgabe['suche']."</td>
		
		
	</tr><tr>
	
	
			<td>Bezirk:</td>
			<td align='center'>".$ausgabe['bezirk']."</td>
			
			
	</tr><tr>
	
	
		<td>Gemeinde:</td>";
	if($ausgabe['umland'])
	   { echo "<td align='center'>".$ausgabe['umland']."</td>"; }
	else
	   { echo "<td align='center'>---</td>"; }
	   
echo "		
		
	</tr><tr>
	
	
		<td>Postleitzahl:</td>
		<td align='center'>".$ausgabe['postleitzahl']."</td>

		
	</tr><tr>
	
	
		<td>Kurze Beschreibung:</td>
		<td align='center'><input name='kb' type='text' maxlength='150' style='width:155px;' value='".$ausgabe['kb']."' /></td>
		
		
	</tr><tr valign='top'>
	
	
		<td>Lange Beschreibung:</td>
		<td align='center'><textarea name='lb' rows='8' style='width:153px;'>".$ausgabe['lb']."</textarea></td>
		
		
	</tr><tr>
	
	
		<td>Zustand:</td>
		<td align='center'>
			<select name='zustand' style='width:155px;'>
				<option value='keine Beschädigung'>keine Beschädigungen</option>
				<option value='leicht Zerkratzt'>leicht Zerkratzt</option>
				<option value='Zerkratzt'>Zerkratzt</option>
				<option value='stark Zerkratzt'>stark Zerkratzt</option>
				<option value='leicht Beschädigt'>leicht Beschädigt</option>
				<option value='Beschädigt'>Beschädigt</option>
				<option value='stark Beschädigt'>stark Beschädigt</option>
			</select></td>
		
		
	</tr><tr>
	
	
		<td>Telefon-Nummer.:</td>
		<td align='center'>(".$ausgabe['tel'].")&nbsp;".$ausgabe['tel2']."</td>
		 
		 
	</tr><tr>
	
	
		<td>eMail-Adresse:</td>
		<td align='center'>".$ausgabe['email']."</td>
		
		
	</tr><tr>
	
	
		<td align='center' colspan='2'><label for='regeln'><span class='lab'>Ich habe Nutzungsregeln gelesen und akzeptiere diese!</span></label> <input id='regeln' name='regeln' type='checkbox' value='regeln' /></td>
		
		
	</tr><tr>
	
	
		<td>Eintragen?</td>
		<td align='center'><input type='submit' maxlength='150' style='width:155px;' name='speichern' value='Bearbeiten' /></td>";

   }
else
   { echo "<td align='center\" class=\"haupt\"><b><u>Inserat exestiert nicht!</u></b></td> \n"; }
?>


	</tr>
</table>


</form>


<br />


Nun meine Frage, könntet ihr mir bitte dabei helfen?
 
Hi.

Du fügst dort in den SQL String Variablen ein, deren Werte direkt vom Benutzer der Webseite kommen. Soetwas ist natürlich äußerst unsicher (SQL Injektion).

Lass dir doch mal den zusammengebastelten String ausgeben. Dann siehst du vermutlich eher was falsch ist.

Gruß
 
Probier mal Folgendes:
PHP:
$aendern = "UPDATE bt_inserat 
    SET `ich` = '".mysql_real_escape_string($ich)."' , `kb` = '". mysql_real_escape_string($kb)."' , `lb` = '". mysql_real_escape_string($lb)."' , `zustand` = '". mysql_real_escape_string($zustand)."' WHERE id =".(int)$_GET['id'];
 
Glaube du hast hier noch nen kleinen Fehler, der vermutlich nichts mit deinem eigentlichen Problem zu tun hat, aber nervige Auswirkungen haben kann ;)
PHP:
    $lb = $_POST['kb'];
    $kb = $_POST['lb'];
kb <-> lb ?!
 
Probier mal Folgendes:
PHP:
$aendern = "UPDATE bt_inserat 
    SET `ich` = '".mysql_real_escape_string($ich)."' , `kb` = '". mysql_real_escape_string($kb)."' , `lb` = '". mysql_real_escape_string($lb)."' , `zustand` = '". mysql_real_escape_string($zustand)."' WHERE id =".(int)$_GET['id'];

Okay, vielen lieben Danke. Dementsprechend musste ich mein Script auf eine 3. Seite fürs bearbeiten ändern, aber das war das kleine Problem. Hab dazu noch eine weitere Abfrage gemacht. :) Vielen dank nochmal :)


Glaube du hast hier noch nen kleinen Fehler, der vermutlich nichts mit deinem eigentlichen Problem zu tun hat, aber nervige Auswirkungen haben kann ;)
PHP:
    $lb = $_POST['kb'];
    $kb = $_POST['lb'];
kb <-> lb ?!

*AUSREDE AN*
Ich wollte nur testen, ob sich das überhaupt jemand durchliest.
*AUSREDE AUS*

Nein scherz. Danke für die Information, hab es geändert. Wenn ich euch nicht hätte. Vielen dank euch :)
 
Zurück