2015-05-06 191 views
0

我是PHP的新手,所以這對我來說是新手。無論如何,我正在創建一個網站,以便我可以在線訪問我的信息。HTML/PHP表單不會將數據發送到MySQL數據庫

這是形式:

<form action="Form.php" method="post" class="basic-grey"> 
<h1><a href="index.html">Receita</a> 
    <span>Aqui podes adicionar uma nova receita</span> 
</h1> 
<label> 
    <span>Titulo :</span> 
    <input id="titulo" type="text" size="20" maxlength="100" name="titulo" placeholder="Introduza o Titulo" /> 
</label> 

<label> 
    <span>Categoria :</span><select maxlength="10" name="categoria"> 
    <option value="categoria">--- Seleccione aqui a Categoria ---</option> 
    <option name=" " value="sopa">Sopa</option> 
    <option name="entrada" value="entrada">Entrada</option> 
    <option name="carne" value="carne">Carne</option> 
    <option name="peixe" value="peixe">Peixe</option> 
    <option name="salada" value="salada">Salada</option> 
    <option name="sobremesa" value="sobremesa">Sobremesa</option> 
    </select> 

</label> 

<label> 
    <span>Ingredientes :</span> 
    <textarea id="ingredientes" size="20" maxlength="1000" name="ingredientes" placeholder="Introduza os ingredientes"></textarea> 
</label> 
<label> 
    <span>Preparação :</span> 
    <textarea id="preparacao" size="20" maxlength="1000" name="preparacao" placeholder="Introduza o modo de preparação"></textarea> 
</label> 
<label> 
    <span>Notas :</span> 
    <textarea id="notas" size="20" maxlength="1000" name="notas" placeholder="Aqui pode adicionar uma nota"></textarea> 
</label> 
<label> 
    <span>&nbsp;</span> 
    <input type="submit" class="button" value="Enviar" /> 
</label> 

</form> 

這是代碼來處理形式:

​​

會發生什麼,如果我輸入這樣的事情它不工作:

TITULO:阿索爾達德camarao

Categoria:Peixe

配料:800克de camarao; 4代表德阿爾霍; 1 ramo de salsa ou coentros; 3個ovos inteiros; 1.5 dl de Azeite; 1.5pãopor pessoa;薩爾; piri-piri

準備工作:Coze-se ocamarãocom sal pi pi-piri e reserva-se a agua。 De seguida demolha-se opãona agua docamarão。 Aquece-se ozeze com os al osos os coentros e de seguida junta-se ocamarãoe por ultimo opão。 Mexe-se tudo para cozer opãoe ganhar Consistencia。 Por ultimo junta-se os ovos e envolve-se tudo。

諾塔:Receita第4個pessoas

但如果我喜歡這個輸入它的工作原理:

TITULO:gfdsfdsa

分類:PEIXE

Ingredientes:hudsbfbdsf fdsfidsfidsfsd,fdsjifjdsifdis 0palpdsandnsaud jkdosakodsakodmnsa jidsjaidsa

Preparaç AO:nfjdbshfbhdbjfdjs dsajijdisandiabuu fjndoisjfojidsanfds

諾塔:fbhdubsufbndsnfs

我的數據庫表中:

Nome Tipo Agrupamento (Collation) Atributos Nulo Omissao Extra 

1 ID BIGINT(50)NAO無AUTO_INCREMENT慕達慕達Elimina
2 TITULO VARCHAR(100)utf8_general_ci Não無Muda Muda Elimina 3 Categoria varchar(10)utf8_general_ciNão無Muda Muda
4 Ingredientes varchar(1000)utf8_gene ral_ci NAO無慕達 5 Preparacao VARCHAR(1000)utf8_general_ci NAO無慕達慕達6 NOTAS VARCHAR(1000)utf8_general_ci NAO無慕達慕達

抱歉,如果這後其長。任何想法如何解決它?

+1

添加錯誤報告給您的文件(S)的頂部例如您打開PHP標籤 '

+3

[您的腳本存在SQL注入風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

回答

5

輸入中可能存在一個特殊字符,導致查詢中出現語法錯誤。

您需要先將輸入內容替換爲查詢。添加後include ('connection.php');

$titulo = mysqli_real_escape_string($dbc, $titulo); 
$categoria = mysqli_real_escape_string($dbc, $categoria); 
// and so on for all the other variables 

或(更好地)使用準備好的語句。在發出呼叫的使用此mysqli_query

$stmt = mysqli_prepare($dbc, "INSERT INTO receita(Titulo,Categoria,Ingredientes,Preparacao,Notas) VALUES (?, ?, ?, ?, ?)"); 
mysqli_stmt_bind_param($stmt, "sssss", $titulo, $categoria, $ingredientes, $preparacao, $notas); 
mysqli_stmt_execute($stmt); 
$registered = mysqli_stmt_affected_rows($stmt); 
+0

@BryanWay他在問題中使用mysqli 。我沒有改變這一點。 – Barmar

+0

對不起,但我有點失落。 Barmar上面的代碼是否添加或替換?和哪裏?對不起,這裏是noob:p –

+0

我已經添加了更多的解釋,我希望這已經足夠了。你應該清楚你是否明白這些東西的作用。 – Barmar