2017-04-04 2 views
0
<form method="POST" action="welcome.php"> 
<input name="fname" type="text"/> 
<input type="submit" value="Submit"> 
</form> 

<?php 
$connect = mysqli_connect("dbhost", "dbuser", "dbpass", "dbname"); 
mysqli_query($connect, 'INSERT INTO `Urls` (URLS) 

VALUES 
("$_POST[`fname`]");') 
?> 

So nach der Korrektur der PHP-Skript mehrmals ich endlich bekommen es in der Datenbank zu buchen, aber anstatt Benutzereingaben zu buchen es 0s in der Buchung Säule. Ich habe keine Syntaxfehler mehr, und ich habe die hinteren Ticks auf verschiedene Arten ausprobiert.Eingabedaten werden nicht nach SQL gesendet nur 0s, keine Syntaxfehler

The Table looks like: 
URLS 
0 
0 
0 
+0

Wie ist Ihre Tabellenstruktur? Sehen Sie sich auch SQL Injection an (ich würde vorschlagen, vorbereitete Anweisungen in PHP zu verwenden) – CollinD

+0

Warum wette ich es ein int – nogad

+0

Es ist nur die URLS Spalte. Alles, was die SQL-Injektion mir gibt, ist INSERT INTO URLs (URLS) VALUE ([Wert-1]) – Erin

Antwort

-1

Probieren Sie es aus. PHP ersetzt keine Variablen in Strings, die in einfachen Anführungszeichen stehen. Verwenden Sie Verkettung.

<form method="POST" action="welcome.php"> 
<input name="fname" type="text"/> 
<input type="submit" value="Submit"> 
</form> 

<?php 
$connect = mysqli_connect("dbhost", "dbuser", "dbpass", "dbname"); 
mysqli_query($connect, 'INSERT INTO `Urls` (`URLS`) 
VALUES 
("'.$_POST['fname'].'");') 
?> 

Wie in den Kommentaren erwähnt, dieser allgemeine Stil wäre suseptable für SQL-Injection und nur bereitgestellt wird, zu zeigen, wo der OPs Code nicht korrekt war.

+0

Sie nicht Ticks um fname wollen Sie? – nogad

+1

Die Backticks sollten einfache Anführungszeichen sein ... '$ POST ['fname']'. Trotzdem scheint dieses Muster anfällig für SQL-Injection zu sein. Zumindest sollten potenziell unsichere Werte mit der Funktion mysqli_real_escape_string richtig maskiert werden. – spencer7593

+0

Ich bekomme einen Syntaxfehler, wenn ich das versuche. – Erin