• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

PHP / MYSQL Update fehler

Oxy

Antonowka
Registriert
15.03.07
Beiträge
363
Hallo ich habe ein "kleines" Problem bei meinem Update Befehl , wenn ich in den Update befehl ein Query OHNE Variable
(UPDATE `baeder` SET `aufgaben` = 'OHNEVARI' WHERE bad ='Vreden' and aufgaben=''Keine";)
absetze ändert er meine Datenbank , allerdings wenn ich das Query
(UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' WHERE bad ='Vreden' and aufgaben=''";)
absetze Ändert er meine Daten nicht ich habe die Vermutung das in " .$_POST['aufin']. " kein wert eingefügt wird , weil wenn ich Dies vor dem Query ausgeben will erscheint nix ... Irgendwie ist meine If abfrage nicht korrekt oder meine eingabe ... ich habe keine Ahnung was da nicht stimmt
Bitte um Hilfe
Source :
<html>
<head><title>Datenbank</title>
</head>
<body>
<?php
echo "<pre>".print_r($_POST)."</pre>";
error_reporting(E_ALL);
include("config.php");

$con=@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
echo "
<form method='post'>
<input type='radio' name='methode' value='bad'>BaederInfo<br>
<input type='radio' name='methode' value='aufg'>Aufgaben<br>
<input type='radio' name='methode' value='both'>Beides<br>
<input type='submit' name='submit' value='Senden'>
</form>";

switch($_POST['methode']){
case "aufg":
echo "
<form method='post'>
zu aendernde Daten eingeben<br>
<input type='text' name='aufin'>: Aufgabe <br>
<input type='submit' name='submit2' value='Abschicken'>
</form>";



if($_POST['submit2']="Abschicken"){
$sql = "UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' WHERE bad ='Vreden' and aufgaben=''";
echo "UPDATE `baeder` SET `aufgaben` = '$aufin' WHERE bad ='Vreden' and aufgaben=''";
$result=mysql_query($sql,$con);
echo "Daten wurden geaendert";
}else{ echo "Daten wurden nicht geändert";}
}

?>
<br>
<a href=mySql.php>zur Auswahl</a><br>
<a href=ausgabe.php>zur Ausgabe</a><br>
</body>
</html>

Mfg -Oxy-
 

LaForce

Transparent von Croncels
Registriert
18.01.06
Beiträge
309
Ich würde mal vermuten, dass wenn Du die Sache nochmal LESBAR postest, Du auch ne Antwort bekommst.... ;)
 

duderino

Prinzenapfel
Registriert
26.01.06
Beiträge
555
Poste doch einfach das reine Query.
Dann kann ich da mal drüber schauen...
 

Oxy

Antonowka
Registriert
15.03.07
Beiträge
363
Das Query an sich klapptja ^^ aber er übernimmt die Variable nicht in das Query und dann führt er den Query falsh aus aber der query ist
"UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' WHERE bad ='Vreden' and aufgaben=''";
 

theangel

Bismarckapfel
Registriert
19.06.05
Beiträge
141
Code:
"UPDATE baeder SET aufgaben = '".$_POST['aufin']."' WHERE bad = 'Vreden' AND aufgaben = ''";

Wenn die Variabel wirklich per Post übergeben wird und aufin heisst, müsste das so eigentlich funktionieren.
 

Oxy

Antonowka
Registriert
15.03.07
Beiträge
363
ich habeja eine Abfrage oben mit den radiobutons und wenn ich da Baeder auswähle führt er gleich den Query aus
 

Oxy

Antonowka
Registriert
15.03.07
Beiträge
363
habe 2 fehler gefunden habe eine zuweisung gemacht anstatt ein vergleich ... aber trotzdessen funktioniert die letze ifanweisung nicht , hier nocham der code Schnipsel :
if($_POST['methode'] == "aufg") {

echo "<form method='post'>
zu aendernde Daten eingeben<br>
<input type='text' name='aufin'>: Aufgabe <br>
<input type='submit' name='submit2' value='Abschicken'>
</form>";



if($_POST['submit2']=="Abschicken"){
$sql = "UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' WHERE bad ='Vreden' and aufgaben=''";

$result=mysql_query($sql,$con);
echo "Daten wurden geaendert";
}else{ echo "Daten wurden nicht geändert";}
}
 

Oxy

Antonowka
Registriert
15.03.07
Beiträge
363
Ich würde mal vermuten, dass wenn Du die Sache nochmal LESBAR postest, Du auch ne Antwort bekommst.... ;)
Sind immer die Tollsten beiträge die einem so absolut garnicht helfen , trotzalledem habe ich den fehler nu gefunden
 

theangel

Bismarckapfel
Registriert
19.06.05
Beiträge
141
Führt er den SQL-Befehl denn aus oder springt deine zeite if-schleife garnicht an?

Mach doch zwischen $sql und $result mal echo $sql und schau dir an, welchen Befehl genau er an die Datenbank schickt.

Wenn du LaForce schon so antwortest, dann hier auch mal meine Gedanken zu dem Thema:

Dein Code ist wirklich schlecht lesbar. Abgesehen davon, dass du in einem Forum auch immer die dafür vorgesehen code-Funktion nutzen solltest, wenn du Code einfügst.

Du solltest dir mal angewöhnen deinen Code leserlich zu schreiben, also dich entscheiden wo du wie Leerzeichen machst und das dann auch wirklich strikt durchziehen (z.B. in deinem SQL-Befehl hast du mal Leerzeichen, mal keine. Tabulatoren helfen auch um leserlichen Code zu Produzieren genauso wie ein Zeilenumbruch an der richtigen Stelle.

Code:
UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' WHERE bad ='Vreden' and aufgaben=''

Warum benutzt du manchmal ein ` und manchmal nicht? Warum schreibst du SET und WHERE gross, AND aber nicht? Nach dem einen= kommt ein Leerzeichen, bei einem anderen nicht.

Dann machst du ein mal

Code:
= '".$_POST['aufin']."'

und ein anderes mal

Code:
= '$aufin'

Abgesehen davon, dass in dem Fall register_globals wohl aktiviert ist, was nie eine gute Idee ist.

Code leserlich zu verfassen ist wirklich das A und O. Es erleichtert ungemein die Fehlersuche und ist ein muss, wenn man sich in fremden Code einzuarbeiten hat.

Also nimm nett gemeinte Hinweise lieber auch als diese auf und fühl' dich nicht gleich angegriffen.
 

Oxy

Antonowka
Registriert
15.03.07
Beiträge
363
Joa magstja recht haben aber wenn ich des Script in der Form nu habe wäre es ziemlich umständlich das alles anzupassen nur Damit es dem herrn passt .... und die Funktion


Code:
 Habe ich vorher garnicht gesehen gehabt ;)
Hiermit Danke für deine Antwort , habe das Problem jetzt gefunden habe lediglich die Klammer Falsch gesetzt
mfg -Oxy-
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Sicherheitshinweis:

Code:
UPDATE `baeder` SET `aufgaben` = '".$_POST['aufin']."' ...

... ist richtig schön gefährlich. Warum?
Darum: SQL Injektion

Stell Dir einfach mal vor, ich gebe im Formular für "aufin" diesen Wert ein:
Code:
'; DROP TABLE mysql WHERE 1<>'

Läuft Dein Datenbankbenutzer dann zudem noch mit erweiterten Rechte und nicht reduzierten Rechten, was sicherlich aus Faulheit bei vielen der Fall sein wird, ist der Schaden enorm.

Abilfe: http://de.php.net/mysql_real_escape_string

Bitte postet als Tipps keine solchen Konstrukte, wo Benutzereingaben ungefiltert in Programmcode überführt werden! Anfänger wissen die Gefahr häufig nicht einzuschätzen und neigen dazu, den geposteten Beispielcode unverändert zu verwenden!
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
Code:
$sql = "UPDATE `baeder` [color=red]SET `aufgaben` = '".$_POST['aufin']."'[/color] WHERE bad ='Vreden' and aufgaben=''";
Das darf man gleich gar nicht machen! Du übernimmst einen String, der als unsicher gilt und übergibts in direkt an das DBMS. Das öffnet die Tür und Tor für SQL-Injection!

Code:
$aufgabe = mysql_real_escape_string ($_POST['aufin']);
$sql = "UPDATE 'baeder' SET 'aufgaben' = '".$aufgabe."' WHERE bad = 'Vreden' AND aufgaben='';
 

Oxy

Antonowka
Registriert
15.03.07
Beiträge
363
Danke Danke für eure Hilfe und anregungen =)
Denke da dies eine Datenbank auf einem Lokalen Netzwerk werden soll brauch ich mich nicht auchnoch mit der sicherheit beschäftigen ;)
Trotzdem viel Dank an all die Guten tipps
mfg -Oxy-
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
Denke da dies eine Datenbank auf einem Lokalen Netzwerk werden soll brauch ich mich nicht auchnoch mit der sicherheit beschäftigen ;)
Faule Ausrede, Programme leben länger als man das gemeinhin annimmt.
 

Oxy

Antonowka
Registriert
15.03.07
Beiträge
363
Faule aber Gute Ausrede ... meine PHP Kenntnisse sind einfachma dermassen schlecht und da ich weiss das dies lediglich ein Projekt Planer ( btw zur überischt der Projekte in "dieser" Firma dient) wird die DB und auch diese Script nur Lokal verwendet ausserdem , mussman von nem Praktikanten ja aunet zu viel erwarten *g
mfg -Oxy-
 

Oxy

Antonowka
Registriert
15.03.07
Beiträge
363
Na gut da ihr euch soviel mühe gegeben ahbt mit den Sicherheitslücken bau ichma paar Sicherheits"abfragen" oder wie man de snnene soll ein , gibt bestimmt ne bessere Note daich des Vorstellen muss vor meien Schule xD If(Dran Denk){ echo "Kotz Reiz Krieg";}Else(echo "Tip Top";)
Mfg -Oxy-