$ _POST empfängt keine Daten aus dem Eingabetext mit dem Tag-Formular

Ich habe Probleme, den Wert aus meinem Eingabetext an meine Variable ( $ name ) in meinem PHP-Code zu senden:

Hier sende ich meine Daten an die edit.php

<form action="edit.php" method="post">
    <input type="text" name="edit_text"/>
    <input id="send" type="submit"/>
</form>

meine Datei edit.php:

<?php
header("Content-Type: application/json");

$name = isset($_POST["edit_text"])?$_POST["edit_text"]:"";
$con=mysqli_connect("localhost","root","root","example");
$result = mysqli_query($con,"SELECT * FROM items WHERE name = '".$name."'");
$row = mysqli_fetch_array($result, MYSQL_ASSOC);

echo json_encode($row);
mysqli_close($con);
?>

Ich suche nach einem Datensatz in meiner Tabelle, dann gebe ich ein JSON-Objekt mit den Werten meiner Abfrage zurück. Aber es funktioniert nur, wenn ich den Namen meines Artikels direkt in die Zeichenfolge eingeben:

$result = mysqli_query($con,"SELECT * FROM items WHERE name = 'ITEM'");

Ich benutze getjson und console.log (), um zu sehen, was passiert, und es gibt das Json-Objekt mit den richtigen Werten aus meiner Tabelle zurück.

Aber wenn ich dieselbe Abfrage verwende, aber mit meiner Variablen $ name , die den gleichen Namen meines der Abfrage zugeordneten Objekts zugewiesen hat, funktioniert das nicht.

$result = mysqli_query($con,"SELECT * FROM items WHERE name = '".$name."'");

Es gibt immer Nullwerte zurück, als ob meiner $ name Variable aus meinem Eingabetext nichts zugewiesen wäre.

0
Welche Art von Header ist es? header ("Content-Type: application/jason"); sollte header sein ("Content-Type: application/json");
hinzugefügt der Autor jogesh_pi, Quelle
Repariere jason auf json .
hinzugefügt der Autor Killrawr, Quelle
hahaha, ich habe das nicht gesehen, danke für die Antwort, aber ich habe jason im Header JSON geändert, aber nichts hat sich geändert.
hinzugefügt der Autor fernando, Quelle
Vielen Dank für die Ratschläge, ich wusste nicht über SQL-Injektion Ich werde auf jeden Fall einen Blick darauf werfen :)
hinzugefügt der Autor fernando, Quelle
Ist das ein Ajax Post? hast du versucht, print_r ($ _ POST)?
hinzugefügt der Autor Jason W, Quelle
Überprüfen Sie den Fehler von mysqli mit mysqli_errno und mysqli_error
hinzugefügt der Autor Marcel Balzer, Quelle
Also, wenn wir edit_text mit einem Wert wie "1" schreiben, drop table items, wähle '' was denkst du wird passieren? .. Vorschlag: lese in sql injection. (und check out mysqli vorzubereiten ..)
hinzugefügt der Autor Damien Overeem, Quelle
Addendum zu @ DamienOvereems Kommentar: Sie geben direkt die Eingabe Ihres Formulars in Ihre Abfrage ein ( $ name , in diesem Fall). Dies macht Ihre Anfrage sehr anfällig für SQL-Injection.
hinzugefügt der Autor Marijke Luttekes, Quelle

1 Antworten

Ich würde Ihren Code in etwa so ändern:

if (isset($_POST['edit_text'])) {

    $name = $_POST['edit_text'];
    $con=mysqli_connect("localhost","root","root","example");

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $result = mysqli_query($con,"SELECT * FROM items WHERE name = '$name'");

    $data = array();
    while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
                                      //Noitcie ^ the 'I' here
        $data[] = $row;
    }
    mysqli_close($con);
    echo json_encode($data);
}

Wenn Sie doppelte Anführungszeichen verwenden, müssen Sie Ihre Variablen nicht verketten.

Hoffe das hilft!

0
hinzugefügt
Eine Sache, die ich untersuchen würde, ist entkommen Sie Ihre Variablen, da dies anfällig für SQL-Injektion ist. Ein Platz zum Starten wäre entweder php.net/manual/en /mysqli-stmt.bind-param.php oder schaue auf Youtube nach Sachen auf PDO.
hinzugefügt der Autor Ross Wilson, Quelle
vielen dank für ihre hilfe jetzt funktioniert der code super
hinzugefügt der Autor fernando, Quelle
PHP - Deutsche Gemeinschaft
PHP - Deutsche Gemeinschaft
5 der Teilnehmer

In dieser Gruppe sprechen wir über PHP. Partner: de.switch-case.com

JavaScript - Deutsche Gemeinschaft
JavaScript - Deutsche Gemeinschaft
3 der Teilnehmer

In dieser Gruppe sprechen wir über JavaScript.