2016-10-18 5 views
1

Kann jemand erklären, warum dieser Einsatz nicht funktioniert?kann keine Daten aus Formularen in mysql einfügen

if(isset($_POST['send'])){ 
    $query = 'INSERT INTO subsciber(data, ip, email) 
      VALUES(CURRENT_TIMESTAMP, "'.$_SERVER['REMOTE_ADDR'].'", "'.$_POST['email'].'")'; 
    $result = @mysqli_query($dbc, $query); 
} 

und bildet Code sieht wie folgt aus:

<div class="row"> 
    <div class="col-md-4 col-md-offset-4 col-sm6-6 col-sm-offset-3 "> 
     <form class="form-inline" role="form" method="post"> 
      <div class="form-group"> 
       <label class="sr-only" for="exampleInputEmail2">Email address</label> 
       <input name='email' id="email" type="email" class="form-control transparent" placeholder="Your email here..."> 
      </div> 
      <button type="submit" name='send' value='send' class="btn btn-danger btn-fill">Notify Me</button> 
     </form> 
    </div> 
</div> 
+0

versuchen, was der Fehler ist, die –

+0

Zeigen Sie uns, '$ dbc' zurückgegeben. Haben Sie eine Verbindung zur Datenbank? Haben Sie irgendeinen Wert in '$ _POST ['email']'? Gibt es überhaupt einen Fehler? –

+0

Sie sollten im Entwicklungsmodus ein Fehler melden. Verwenden Sie niemals @, um Fehler zu verbergen. –

Antwort

1

sollten Sie umfassen mysqlierrorfunction

if(isset($_POST['send'])){ 
     $query = 'INSERT INTO subsciber(data, ip, email) 
       VALUES(CURRENT_TIMESTAMP, "'.$_SERVER['REMOTE_ADDR'].'", "'.$_POST['email'].'")'; 
//echo $query; to see query output 
     $result = mysqli_query($dbc, $query) or die(mysqli_error($dbc)); 
    } 

auch Ihre Fehler zu sehen data mysqli ist keyword so backtick dieser Sie

$query = 'INSERT INTO subsciber(`data`, ip, email) 
        VALUES(CURRENT_TIMESTAMP, "'.$_SERVER['REMOTE_ADDR'].'", "'.$_POST['email'].'")'; 
+0

Es ist ein Schlüsselwort, aber es ist nicht reserviert. – Barmar

-1

Ihre Form keine Aktion Eigenschaft haben:

tun:

<form action="the url to your PHP script"> 
+0

Standardmäßig wird dieselbe URL wie die Seite selbst verwendet. – Barmar

+0

Wenn das PHP-Skript in der gleichen Datei wie das HTML-Formular ist –

-2

ersetzen

@mysqli_query($dbc, $query); 

mit

mysqli_query($dbc, $query); 
+0

Das wird nicht helfen. mysqli_query() 'meldet MySQL-Fehler nicht automatisch, Sie müssen mysqli_error ($ dbc)' ausdrucken. – Barmar

-2

statt einfache Anführungszeichen um verwenden kann doublequo verwenden tation

Dieses

if(isset($_POST["send"])) { 
    ..... 
} 
+0

Warum würde das einen Unterschied machen? Es gibt nichts in "Senden", das sich je nach Art der Anführungszeichen unterschiedlich verhält. – Barmar

+0

Ich habe das gleiche Problem einmal konfrontiert, dann änderte ich ein einzelnes Zitat zu doublequotation es funktioniert gut –

+0

Es muss ein anderes Problem gewesen sein. Siehe http://stackoverflow.com/questions/3446216/what-is-the-difference-between-single-quoted-and-double-quoted-strings-in-php – Barmar