php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-12-2008, 15:31
mitch26
 Newbie
Links : Onlinestatus : mitch26 ist offline
Registriert seit: Dec 2008
Beiträge: 12
mitch26 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Falscher Wert aus Abfrage

Hallo,

über 2 Abfragen hole ich mir aus verschiedenen Tabellen die ID's. Diese möchte ich dann in eine neue Tabelle schreiben. Dies mache ich mit folgenden Code:

PHP-Code:
$sqlidort "SELECT `ort_nr` FROM `tbl_ort` WHERE  `ort` = '".$_POST['user1']."'";
$sqlidzuordnung "Select `zuordnung_nr` FROM `tbl_zuordnung` WHERE  `zuordnung_beschreibung` = '".$_POST['zuordnung']."'";


$erg mysql_db_query("db26",$sqlidort,$con);
$erg2 mysql_db_query("db26",$sqlidzuordnung,$con);

while (
$id mysql_fetch_array($erg))
{
    while (
$id2 mysql_fetch_array($erg2))
        {
            
$id2 $id2['0'];
            
$result2 mysql_query($erg2);
            
$id $id['0'];
            
$result mysql_query($erg);
/*echo mysql_error();*/
$_POST['strasse'] = mysql_real_escape_string($_POST['strasse']); 


$sql "INSERT INTO `tbl_objekt` (`strasse`,`ort_nr`,`zuordnung_nr`)
                    VALUES ('"
.$_POST['strasse']."', '".$id."', '".$id2."')";
        }

Das funktioniert auch fast. Nur bei der Variabel $id2 passiert ein Fehler. In die Datenbank wird da der Wert von $id eingetragen.

Woran kann das liegen?

Danke

Edit:

Fehler selbst gefunden. Eine Variable war nicht richtig geschrieben. Dumm dumm.


Geändert von mitch26 (04-12-2008 um 15:35 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 04-12-2008, 18:10
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Du hast noch ein ganz anderes Problem! Nach $erg=mysql_db_query() ist $erg bereits eine Result-Resource, mysql_query($erg) funktioniert also nicht.
Dein ganzer Code ist Unsinn.
Mit Zitat antworten
  #3 (permalink)  
Alt 05-12-2008, 10:23
mitch26
 Newbie
Links : Onlinestatus : mitch26 ist offline
Registriert seit: Dec 2008
Beiträge: 12
mitch26 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Guten Morgen onemorenerd,

danke für deinen Hinweis.

Was bewirkt denn diese Result-Resource?

Denn der Code funktioniert bei mir so wie er soll.

gruß mitch
Mit Zitat antworten
  #4 (permalink)  
Alt 05-12-2008, 10:47
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Mit error_reporting(E_ALL) wirst du sehen, dass der Code voller Fehler ist. mysql_query() erwartet einen String, keine Resource.
Warum machst du eigentlich diese mysql_query(), verwendest deren Ergebnisse aber gar nicht?

Setze mal bitte echo $sql; in die letzte Zeile der inneren Schleife, also nach dem $sql = "Insert ...";
Fällt dir was auf? Deine while-Schleifen sind total sinnlos! Dein ganzer Code ist absoluter Käse!
Mit Zitat antworten
  #5 (permalink)  
Alt 05-12-2008, 11:00
mitch26
 Newbie
Links : Onlinestatus : mitch26 ist offline
Registriert seit: Dec 2008
Beiträge: 12
mitch26 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also mit error_reporting(E_All) hatte ich keine Fehler. Die Zeile hatte ich schon im Code.

Mit deinem echo $sql; kommt folgende Fehlermeldung:

Zitat:
Notice: Undefined variable: sql in /homepages/23/d259660641/htdocs/eingetragen.php on line 33
Klingt ja nicht so gut wenn das alles sinnlos ist.

Vielleicht kannst du mir ja sagen wie ich das besser umsetzen kann.

Ziel soll es sein aus 2 Abfragen die Werte zu übernehmen und diese dann in einer neuen Abfrage in die Datenbank zu schreiben.

Danke

Edit: achso das kommt bei Echo $sql; raus

Zitat:
INSERT INTO `tbl_objekt` (`strasse`,`ort_nr`,`zuordnung_nr`) VALUES ('Bremerstraße 45', '5', '1')

Geändert von mitch26 (05-12-2008 um 11:19 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 05-12-2008, 11:20
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wenn du das echo $sql; an der richtigen Stelle hattest, kann diese Fehlermeldung gar nicht entstehen. Ich nehme aber an, du hattest das echo in der äußeren Schleife. Das heißt, die innere wird überhaupt nicht betreten, was nur sein kann, wenn $erg2 keine Ergebnisse enthält.

Jetzt wirf mal den ganzen Code weg; wir fangen nochmal ganz von vorn an.

Was wollen wir? Wir wollen aus einer Tabelle A einen Wert x ziehen und aus Tabelle B einen Wert y.
Dafür ist also jeweils ein mysql_query() nötig, aber keine Schleife, denn wir wollen jeweils nur einen Wert.
PHP-Code:
$sql_select_x_from_a 'SELECT ...';
$result mysql_query($sql_select_x_from_a);
$x mysql_result($result00);

$sql_select_y_from_b 'SELECT ...';
$result mysql_query($sql_select_y_from_b);
$y mysql_result($result00); 
Die Werte in x und y sollen jetzt wieder in der DB gespeichert werden. Also wieder ein mysql_query().
PHP-Code:
$sql_insert_x_and_y 'INSERT ...';
mysql_query($sql_insert_x_and_y); 
Jetzt setzen wir das alles zusammen und ergänzen es mit dem obligatorischen or die(mysql_query()).
PHP-Code:
$sql_select_x_from_a 'SELECT ...';
$result mysql_query($sql_select_x_from_a) or die(mysql_query());
$x mysql_result($result00);

$sql_select_y_from_b 'SELECT ...';
$result mysql_query($sql_select_y_from_b) or die(mysql_query());
$y mysql_result($result00);

$sql_insert_x_and_y 'INSERT ...';
mysql_query($sql_insert_x_and_y) or die(mysql_query()); 
Nun müssen nur noch die $sql_*-Variablen richtiig erzeugt werden. Das überlasse ich dir.

Geändert von onemorenerd (05-12-2008 um 11:22 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 05-12-2008, 11:32
mitch26
 Newbie
Links : Onlinestatus : mitch26 ist offline
Registriert seit: Dec 2008
Beiträge: 12
mitch26 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke onemorenerd,

habe alles geändert und die Abfragen richtig erstellt. Funktioniert super und sieht auch soviel aufgeräumter aus der Code.

Wie ist es denn mit der Sicherheit bei diesem Code zwecks "Injection" aus?
Mit Zitat antworten
  #8 (permalink)  
Alt 05-12-2008, 11:49
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Der Code den ich zuletzt gepostet habe, der ist sicher. Aber du setzt ja Daten aus $_POST ein. Die mußt du entschärfen mit mysql_real_escape_string() und intval().

Es fehlt dann aber auch noch eine Fehlerbehandlung. Was passiert zum Beispiel, wenn es gar kein x in Tabelle A gibt? Oder kein y in Tabelle B?
Die Frage ob oder ob nicht, kannst du mit mysql_num_rows() beantworten. Was du iim Fehlerfall machst, mußt du selbst entscheiden.


... und dann ist der Code u.U. schon nicht mehr so übersichtlich.
Mit Zitat antworten
  #9 (permalink)  
Alt 05-12-2008, 11:56
mitch26
 Newbie
Links : Onlinestatus : mitch26 ist offline
Registriert seit: Dec 2008
Beiträge: 12
mitch26 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok das mit mysql_real_escape_string() und intval() schaue ich mir mal an.

Und das die Werte für X und Y aus eine Dropdownfeld kommen sind immer Werte vorhanden.

Danke nochmals für deine Hilfe.
Mit Zitat antworten
  #10 (permalink)  
Alt 05-12-2008, 12:00
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Mööp, alsche Antwort!

Du glaubst, der Browser kann dir nur die Daten zurückschicken, die du ihm vorher ins Select reingeschrieben hast. Dem ist aber nicht so. Ich kann mir ein ganz anderes Formular selber bauen und als action deine URL angeben. Oder ich manipuliere das Select in deiner Form mit Firebug ...

Merke: Vertraue niemals Daten, die vom User kommen. Niemals! Auch nicht, wenn du sie ihm vorher gegeben hast. Der User könnte sie verändert haben.
Mit Zitat antworten
  #11 (permalink)  
Alt 05-12-2008, 12:05
mitch26
 Newbie
Links : Onlinestatus : mitch26 ist offline
Registriert seit: Dec 2008
Beiträge: 12
mitch26 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok auch wieder wahr.

Habe wieder mal viel gelernt.

Danke
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:11 Uhr.