Ankündigung

Einklappen
Keine Ankündigung bisher.

INSERT Befehl in SQL wird nur dann angelegt, wenn ..

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • INSERT Befehl in SQL wird nur dann angelegt, wenn ..

    ... sich kein Datensatz in der Tabelle befindet. Der INSERT erzeugt den Datensatz sonst ohne Mucken. Aber nur den Ersten. Der bleibt auch unverändert - egal ob für den 2ten Datensatz dann andere Werte eingeben möchte.

    Wer kann mir hier helfen .. bin sicher es ist wieder mal nur ein kleiner Ausrutscher ... bin newbie .. und koche schon Stunden darüber

    PHP-Code:
    <?php
    $server 
    'server.com';
    $user =   'username';
    $pw =     'password';
    $db =     'database';



    $verbindung = @mysqli_connect($server$user$pw);
     
       if (
    $verbindung){
               
    mysqli_select_db($verbindung$db);    
                  if (
    mysqli_error($verbindung)){
                  echo 
    'Fehler: '.mysqli_error($verbindung);
                  
                  }else{
                  
                  
    $sql_create "
                     INSERT INTO 
                          customer_devices(d_name, d_type, d_model, d_serial, d_memory, d_disc, 
                                           d_proc, d_system, d_warranty, d_bill, d_checkbox, d_info )   
                          VALUES (
                          
                        '
    {$_POST['pc_desk']}',
                        '
    {$_POST['select2']}',
                        '
    {$_POST['pc_mod']}',
                        '
    {$_POST['pc_serial']}',
                        '
    {$_POST['pc_ram']}',
                        '
    {$_POST['pc_hd']}',
                        '
    {$_POST['pc_proc']}',
                        '
    {$_POST['select']}',
                        '
    {$_POST['warranty']}',
                        '
    {$_POST['bill']}',
                        '
    {$_POST['checkbox']}',
                        '
    {$_POST['info']}'
                        
                        
                        )"
    ;    
                                       
                     
    $create_abfrage mysqli_query($verbindung$sql_create); 
                     
                     
                     
    header("location:ware_describe.php");                                                                   
                     
    mysqli_free_result($create_abfrage_abfrage);
                       exit;
                     }
                 }
              
              else { 
              echo 
    'Verbindungsfehler: ' mysqli_connect_error($verbindung);
           };

       
    ?>

  • #2
    1. @ ist böse - unterdrückte Fehlermeldungen helfen keinem
    2. Lerne bitte korrekte String-Verbindung. Variablen in " double quotes sind gefährlich, langsam und fehleranfällig
    3. Versuch mal den query mit Testdaten einfach zweimal zu machen
    [URL="http://goo.gl/6Biyf"]Lerne Grundlagen[/URL] | [URL="http://sscce.org/"]Schreibe gute Beispiele[/URL] | [URL="http://goo.gl/f2jR7"]PDO > mysqli > mysql[/URL] | [URL="http://goo.gl/jvfSZ"]Versuch nicht, das Rad neu zu erfinden[/URL] | [URL="http://goo.gl/T2PU5"]Warum $foo[bar] böse ist[/URL] | [URL="http://goo.gl/rrfzO"]SQL Injections[/URL] | [URL="http://goo.gl/Q81WJ"]Hashes sind keine Verschlüsselungen![/URL] | [URL="http://goo.gl/2x0e2"]Dein E-Mail Regex ist falsch[/URL]

    Kommentar


    • #3
      Wer kann mir hier helfen ..
      Die Datenbank... frage nach dem Query, welcher Fehler aufgetreten ist.

      Standardhinweis zur SQL-Injection Anfälligkeit
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Ahoi,

        eine Vermutung wäre deine id ... ist die denn für deine Tabelle AUTOINCREMENT ?
        ------
        Grüße Manü

        Kommentar


        • #5
          @Manu : Dein Tip hat mir den Fehler gezeigt ... Es war ein primärschlüssel den ich als letztes per Session weitergeben wollte .. hab das aber noch nicht gemacht .. so wurde beim ersten mal eine Null angelegt .. Noch eine Null konnte er im 2ten Datensatz ja nicht erzeugen ... hähä .. Thanks !!!

          Fehler gefunden !! Danke an alle ...

          Kommentar


          • #6
            Zitat von sleepybaer Beitrag anzeigen
            Es war ein primärschlüssel den ich als letztes per Session weitergeben wollte .. hab das aber noch nicht gemacht .. so wurde beim ersten mal eine Null angelegt ..
            meinst du hier grad wirklich NULL oder 0?
            denn der primary key ist wie folgt definiert, was mit deiner aussage nicht zusammenpasst:
            A PRIMARY KEY is a unique index where all key columns must be defined as NOT NULL. If they are not explicitly declared as NOT NULL, MySQL declares them so implicitly (and silently).

            und bei unique ist es so, dass NULL auch mehrmals vorkommen kann, sofern die spalte nicht als NOT NULL definiert ist. dann darf NULL logischerweise überhaupt nicht vorkommen. kann also auch nicht mit deiner aussage passen.
            A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. For all engines, a UNIQUE index permits multiple NULL values for columns that can contain NULL.
            quelle für beide zitate: http://dev.mysql.com/doc/refman/5.7/...ate-table.html

            oder entgeht mir hier was?

            edit: grad nochmal das zitat gelesen
            "eine Null angelegt"
            ist wahrscheinlich wirklich eine 0 gemeint
            zahlen bis 10 (oder war es 20?) schreibt man ja aus, hab ich in der schule gelernt. kann aber manchmal doch verwirrend sein
            liebe Grüße
            Fräulein Dingsda

            Kommentar


            • #7
              Ein PK muss zwar "not null" sein, aber nicht unbedingt "auto increment". Vergisst man das, versucht die DB den zweiten Datensatz unter dem gleichen PK zu erzeugen, wie den vorherigen.
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Wie man von mysql* auf PDO umsteigt
                Wissenswertes zum Thema SQL-Injection

                Kommentar

                Lädt...
                X