Problem mit eine SQL-Anfrage

Henrigo007

Mitglied
Hallo Leute,
ich habe ein Problem mit einer Anfrage habe ich schon viele Möglichkeiten versucht leider klapp es nicht.

Verusch1
PHP:
$abfrage = mysqli_query($dbConnect, " INSERT INTO produits pos_nr = '$pos_nr', farbe = '$farbe', anzahl_laenge_1 = '$anzahl_laenge_1', anzahl_laenge_2 = '$anzahl_laenge_2',anzahl_laenge_3 = '$anzahl_laenge_3',
              anzahl_laenge_4 = '$anzahl_laenge_4', bemerkung_1 = '$bemerkung_1', bemerkung_2 = '$bemerkung_2', bemerkung_3 = '$bemerkung_3', a = $a, b = $b, c = $c, d = $d, e = $e,
     /*hier ist die Zeile 44*/       alpha = $alpha, beta = $beta, user_id = '$user_id', photo ='$selected_photo'");
Fehler:
Warning: mysqli_query() expects parameter 1 to be mysqli, object given in C:\xampp\htdocs\kant\formular.php on line 44

Versuch2
PHP:
$abfrage = $dbConnect->query(" INSERT INTO produits pos_nr = '$pos_nr', farbe = '$farbe', anzahl_laenge_1 = '$anzahl_laenge_1', anzahl_laenge_2 = '$anzahl_laenge_2',anzahl_laenge_3 = '$anzahl_laenge_3',
              anzahl_laenge_4 = '$anzahl_laenge_4', bemerkung_1 = '$bemerkung_1', bemerkung_2 = '$bemerkung_2', bemerkung_3 = '$bemerkung_3', a = $a, b = $b, c = $c, d = $d, e = $e,
       /*hier ist die Zeile 44*/     alpha = $alpha, beta = $beta, user_id = '$user_id', photo ='$selected_photo'");
Fehler:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'pos_nr = '3000W', farbe = 'schwarz', anzahl_laenge_1 = '12x13', anzahl_laenge_2 ' at line 1' in C:\xampp\htdocs\kantteile\formular.php:44 Stack trace: #0 C:\xampp\htdocs\kantteile\formular.php(44): PDO->query(' INSERT INTO pr...') #1 {main} thrown in C:\xampp\htdocs\kantteile\formular.php on line 44

Mein ganzes Code sieht so aus
https://gist.github.com/anonymous/dce138eab1046675007b5c1113a1cd35

Vielleicht hat jemanden einen Vorschlag?
Vielen Dank im Voraus.
 
Zuletzt bearbeitet:
Hi

Fehler 1: Eine Insert-Anweisung schaut generell einfach anders aus.
Deine ist prinzipiell
Code:
 INSERT INTO tabelle spalte1=wert1, spalte2=wert2, spalte3=wert3
Soll-Zustand:
Code:
 INSERT INTO tabelle(spalte1,spalte2,spalte3) VALUES(wert1,wert2,wert3)

(edit @ Set: Man lernt nie aus...)

(Möglicher) Fehler 2: Abhängig davon, wo die Variablen $pos_nr, $farbe usw. herkommen, ist das direkte Einfügen ein Sicherheitsproblem. Lösung:
PHP:
'");
$statement = $dbConnect->prepare(" INSERT INTO produits(pos_nr,farbe,anzahl_laenge_1) VALUES (:pos_nr,:farbe,:anzahl_laenge_1)");
$statement ->bindValue(':pos_nr', $pos_nr);
$statement ->bindValue(':farbe', $farbe);
$statement ->bindValue(':anzahl_laenge_1', $anzahl_laenge_1);
$statement ->execute();
(hier sind nur die ersten drei Variablen, die anderen bitte selber einfügen)
 
V
Hi

Fehler 1: Eine Insert-Anweisung schaut generell einfach anders aus.
Deine ist prinzipiell
Code:
 INSERT INTO tabelle spalte1=wert1, spalte2=wert2, spalte3=wert3
Soll-Zustand:
Code:
 INSERT INTO tabelle(spalte1,spalte2,spalte3) VALUES(wert1,wert2,wert3)

(edit @ Set: Man lernt nie aus...)

(Möglicher) Fehler 2: Abhängig davon, wo die Variablen $pos_nr, $farbe usw. herkommen, ist das direkte Einfügen ein Sicherheitsproblem. Lösung:
PHP:
'");
$statement = $dbConnect->prepare(" INSERT INTO produits(pos_nr,farbe,anzahl_laenge_1) VALUES (:pos_nr,:farbe,:anzahl_laenge_1)");
$statement ->bindValue(':pos_nr', $pos_nr);
$statement ->bindValue(':farbe', $farbe);
$statement ->bindValue(':anzahl_laenge_1', $anzahl_laenge_1);
$statement ->execute();
(hier sind nur die ersten drei Variablen, die anderen bitte selber einfügen)
vielen Dank es hat geklappt
 
Hallo,
ich komme wieder zurück auf dieses Thema, da es mir aufgefallen ist dass ich Fehlermeldung bekomme nachdem ich den oben genannten Vorschlag angewandet habe.

danke im Voraus.

Code:
[Mon Aug 08 16:28:23.255670 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: pos_nr in C:\\xampp\\htdocs\\kantteile\\formular.php on line 17
[Mon Aug 08 16:28:23.256670 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: farbe in C:\\xampp\\htdocs\\kantteile\\formular.php on line 18
[Mon Aug 08 16:28:23.256670 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: anzahl_laenge_1 in C:\\xampp\\htdocs\\kantteile\\formular.php on line 19
[Mon Aug 08 16:28:23.257670 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: anzahl_laenge_2 in C:\\xampp\\htdocs\\kantteile\\formular.php on line 20
[Mon Aug 08 16:28:23.257670 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: anzahl_laenge_3 in C:\\xampp\\htdocs\\kantteile\\formular.php on line 21
[Mon Aug 08 16:28:23.258670 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: anzahl_laenge_4 in C:\\xampp\\htdocs\\kantteile\\formular.php on line 22
[Mon Aug 08 16:28:23.259670 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: bemerkung_1 in C:\\xampp\\htdocs\\kantteile\\formular.php on line 23
[Mon Aug 08 16:28:23.259670 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: bemerkung_2 in C:\\xampp\\htdocs\\kantteile\\formular.php on line 24
[Mon Aug 08 16:28:23.260670 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: bemerkung_3 in C:\\xampp\\htdocs\\kantteile\\formular.php on line 25
[Mon Aug 08 16:28:23.260670 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: a in C:\\xampp\\htdocs\\kantteile\\formular.php on line 26
[Mon Aug 08 16:28:23.261671 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: b in C:\\xampp\\htdocs\\kantteile\\formular.php on line 27
[Mon Aug 08 16:28:23.261671 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: c in C:\\xampp\\htdocs\\kantteile\\formular.php on line 28
[Mon Aug 08 16:28:23.262671 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: d in C:\\xampp\\htdocs\\kantteile\\formular.php on line 29
[Mon Aug 08 16:28:23.262671 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: e in C:\\xampp\\htdocs\\kantteile\\formular.php on line 30
[Mon Aug 08 16:28:23.263671 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: alpha in C:\\xampp\\htdocs\\kantteile\\formular.php on line 31
[Mon Aug 08 16:28:23.263671 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: beta in C:\\xampp\\htdocs\\kantteile\\formular.php on line 32
[Mon Aug 08 16:28:23.264671 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Notice: Undefined index: selected_photo in C:\\xampp\\htdocs\\kantteile\\formular.php on line 33
[Mon Aug 08 16:28:23.265671 2016] [:error] [pid 5992:tid 1636] [client ::1:53355] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'photo' cannot be null' in C:\\xampp\\htdocs\\kantteile\\formular.php:70\nStack trace:\n#0 C:\\xampp\\htdocs\\kantteile\\formular.php(70): PDOStatement->execute()\n#1 {main}\n thrown in C:\\xampp\\htdocs\\kantteile\\formular.php on line 70

PHP:
<?php
    session_start();
    require_once("connection.php");
   
     
    $code_cat        = $_SESSION["selectedIdCat"];
    $user_id         = $_SESSION["user_id"];
    $pos_nr          = $_POST["pos_nr"];
    $farbe           = $_POST["farbe"];
    $anzahl_laenge_1 = $_POST["anzahl_laenge_1"];
    $anzahl_laenge_2 = $_POST["anzahl_laenge_2"];
    $anzahl_laenge_3 = $_POST["anzahl_laenge_3"];
    $anzahl_laenge_4 = $_POST["anzahl_laenge_4"];
    $bemerkung_1     = $_POST["bemerkung_1"];
    $bemerkung_2     = $_POST["bemerkung_2"];
    $bemerkung_3     = $_POST["bemerkung_3"];
    $a               = $_POST["a"];
    $b               = $_POST["b"];
    $c               = $_POST["c"];
    $d               = $_POST["d"];
    $e               = $_POST["e"];
    $alpha           = $_POST["alpha"];
    $beta            = $_POST["beta"];
    $selected_photo  = $_POST["selected_photo"];
   
                                               
    $statement = $dbConnect->prepare(" INSERT INTO produits( code_cat, user_id, photo, pos_nr, farbe, anzahl_laenge_1, anzahl_laenge_2, anzahl_laenge_3, anzahl_laenge_4, bemerkung_1, bemerkung_2, bemerkung_3, a, b, c, d, e, alpha, beta )
                                      VALUES ( :code_cat, :user_id, :photo, :pos_nr, :farbe, :anzahl_laenge_1, :anzahl_laenge_2, :anzahl_laenge_3, :anzahl_laenge_4, :bemerkung_1, :bemerkung_2, :bemerkung_3, :a, :b, :c, :d, :e, :alpha, :beta )");
                                     
    $statement ->bindValue(':user_id', $user_id);
    $statement ->bindValue(':photo', $selected_photo);
    $statement ->bindValue(':pos_nr', $pos_nr);
    $statement ->bindValue(':farbe', $farbe);
    $statement ->bindValue(':anzahl_laenge_1', $anzahl_laenge_1);
    $statement ->bindValue(':anzahl_laenge_2', $anzahl_laenge_2);
    $statement ->bindValue(':anzahl_laenge_3', $anzahl_laenge_3);
    $statement ->bindValue(':anzahl_laenge_4', $anzahl_laenge_4);
    $statement ->bindValue(':bemerkung_1', $bemerkung_1);
    $statement ->bindValue(':bemerkung_2', $bemerkung_2);
    $statement ->bindValue(':bemerkung_3', $bemerkung_3);
    $statement ->bindValue(':a', $a);
    $statement ->bindValue(':b', $b);
    $statement ->bindValue(':c', $c);
    $statement ->bindValue(':d', $d);
    $statement ->bindValue(':e', $e);
    $statement ->bindValue(':alpha', $alpha);
    $statement ->bindValue(':beta', $beta);
    $statement ->bindValue(':code_cat', $_SESSION["selectedIdCat"]);
   
    $statement ->execute();
                   
    if($statement) {

        ?>
       
            <h1 style="text-align:center; margin-top:345px; background-color:#C4FDC2">Die Einträge wurden erfolgreich gespeichert!</h1>

            <script type="text/javascript">

           

                setTimeout("self.location.href='index.php'",3000);

           

            </script>

        <?php
       

    }

    else {

        ?>

            <p><a href="javascript:history.back();">zur&uuml;ck</a></p>
           
            <h1 style="text-align:center; margin-top:345px; background-color:#FA6F6F">Die Einträge wurden nicht gespeichert!</h1>


        <?php

    }
 
?>
 
Was ein Undefined Index bedeutet kann man eigentlich leicht über Google herausfinden :google:

Wenn man mal ignoriert, dass die Zeilennummern der Fehlermeldungen nicht zum Code passen, ist das Problem einfach, dass es kein $_POST["pos_nr"] usw. gibt (weil vom Browser des Benutzers keines gesendet wurde. Falsches HTML-Formular?).

Damit man auf jeden möglichen Fehler und anderen Unsinn von Clients vorbereitet ist muss das PHP-Script so gemacht werden, dass es auch ohne die ganzen Werte zumindest irgendwie funktioniert. In deinem Fall könnte man mit if(isset(...)) prüfen, ob es die Werte gibt; und wenn einer fehlt wird die SQL-Anweisung nicht ausgeführt (und evt. dem Benutzer eine Meldung geben)
 

Neue Beiträge

Zurück