php
  • mysql
  • 2016-12-01 2 views 1 likes 
    1

    Beispiel-Code:Über Zitate in mySQL Abfrage

    $query = "INSERT INTO $table SET 
        category  = '".$_POST['new_dish_category']."', 
        name_of_dish = '".$_POST["new_dish_name"]."',   
        discription = '".$_POST["new_dish_discription"]."', 
        weight  = '".$_POST["new_dish_weight"]."', 
        price  = '".$_POST["new_dish_price"]."'"; 
    

    mir jemand erklären, warum wir hier Anführungszeichen wie ist es? Erster und zweiter von ihnen kann ich unterlegen, aber der dritte und dann Verkettung - ich verstehe nicht.

    Und die zweite Frage: Vielleicht gibt es einen besseren Weg? Ich bin nur ein Anfänger und mein Englisch ist arm, also ... :)

    +0

    Ja, ja, ja, es gibt einen viel besseren Weg! Weil dies für SQL-Injection offen ist. Ich bin nicht sicher, ob Sie [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) oder [mysqli] (http://php.net/manual/en /mysqli.quickstart.php) (BITTE verwenden Sie eine davon), aber schauen Sie sich vorbereitete Anweisungen und Parameterbindung an. Als String müssen Ihre Variablen, die in Ihre Spalten gehen, in Anführungszeichen gesetzt werden, aber vorbereitete Anweisungen eliminieren diese Notwendigkeit. – aynber

    +0

    In dieser Query-Zeichenfolge setzen Sie den Inhalt der Zeichenfolge auf alles zwischen den doublequotes ("). Dies bedeutet, dass die singlequotes (') tatsächlich in der Zeichenfolge sein wird. Was ist, was Sie für die SQL korrekt sein möchten. Die SQL-Zeichenfolge, die Sie generieren, wird etwa so aussehen: 'INSERT INTO test_table SET Kategorie = 'testcategory1', name_of_dish = 'Pizza Margarita', ... und so weiter. – Cashbee

    +0

    Sollte '' Beschreibung '' und Gewicht und sein Preis sollte nicht '' ''sie sollte Integer/Dezimalfelder –

    Antwort

    0

    Es ist ziemlich einfach.

    Werfen Sie einen Blick auf diese

    name_of_dish = '" . $_POST['new_dish_name'] . "', 
    

    Die ' für den MySQL-Parser festgelegt ist, so mysql wird wissen, dass nach ' die Zeichenfolge einzufügen kommt.

    Die " beendet den String für die PHP-Variable. Aber Sie können sie entfernen, weil Funktionen und Variablen von PHP interpretiert werden, solange sie in "" geschrieben werden.

    $variable_1 = "a test string"; // output: a test string 
    $variable_2 = "Test string with $variable_1"; // output: Test string with a test string 
    
    $variable_3 = 'a second test'; // output: a second test 
    $variable_4 = 'Test string with $variable_3'; // output: Test string with $variable_3 
    
    +0

    Vielen Dank für alle! –

    Verwandte Themen