首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML/PHP不向MySQL数据库发送数据

HTML/PHP不向MySQL数据库发送数据
EN

Stack Overflow用户
提问于 2015-05-06 15:50:40
回答 1查看 93关注 0票数 0

我对PHP很陌生,所以这对我来说是新的。不管怎样,我正在创建一个网站,这样我就可以在线访问我的收据了。

以下是表格:

代码语言:javascript
复制
<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>

这是处理表单的代码:

代码语言:javascript
复制
<?php
// processing form values


if ($_SERVER['REQUEST_METHOD'] == 'POST'){

$titulo = $_POST['titulo'];
$categoria = $_POST['categoria'];
$ingredientes = $_POST['ingredientes'];
$preparacao = $_POST['preparacao'];
$notas = $_POST['notas'];


if(!empty($titulo) && !empty($categoria) && !empty($ingredientes) && !empty($preparacao) && !empty($notas)){

    include('connection.php');

    mysqli_query($dbc, "INSERT INTO receita(Titulo,Categoria,Ingredientes,Preparacao,Notas) VALUES ('$titulo','$categoria','$ingredientes','$preparacao','$notas')");
    $registered = mysqli_affected_rows($dbc);
    echo $registered." row is affected, everything worked fine!";
}else{
    echo "Please fill all values on the form";
}

}else{

echo "No form has been submitted";

}

?>

和发生的事情是,如果我输入类似的东西,它不工作:

Titulo:a orda de camarao

类别: Peixe

Ingredientes: 800 g de camarao;4 salsa;1 d salsa ou coentros;3只卵形卵;1.5 dl de Azeite;1.5 p o por pessoa;sal;piri-piri

准备: Coze-se o camar o com sal e piri-piri e reserva-se a agua。E e os coentros e De seguida军政府-se o camar o e e por ultimo o p o. Mexe-se tudo para cozer o p o e ganhar一致性。最后的军政府.

Nota: Receita第4段

,但是如果我像这样输入,它会工作:

Titulo:gfdsfdsa

类别: Peixe

Ingredientes: hudsbfbdsf fdsfidsfidsfsd,fdsjifjdsifdis 0 0palpdsandnsaud jkdosakodsakodmnsa jidsjaidsa

制剂a o: nfjdbshfbhdbjfdjs dsajijdisandiabuu fjndoisjfojidsanfds

Nota: fbhdubsufbndsnfs

我的数据库表:

代码语言:javascript
复制
Nome    Tipo    Agrupamento (Collation) Atributos   Nulo    Omissao Extra   

1 ID bigint(50) N o None AUTO_INCREMENT Muda Muda冲销a

2 Titulo varchar(100) utf8_general_ci N o无Muda Muda消去a 3类别varchar(10) utf8_general_ci N o N Muda Muda

4 Ingredientes varchar(1000) utf8_general_ci N o N 5 utf8_general_ci N o N 6 Notas varchar(1000) utf8_general_ci N o N Muda

如果这个帖子太长了,很抱歉。有什么办法解决吗?

EN

回答 1

Stack Overflow用户

发布于 2015-05-06 15:59:22

输入中可能有一个特殊字符在查询中导致语法错误。

在将输入替换到查询之前,您需要转义输入。将此添加到include ('connection.php');之后

代码语言:javascript
复制
$titulo = mysqli_real_escape_string($dbc, $titulo);
$categoria = mysqli_real_escape_string($dbc, $categoria);
// and so on for all the other variables

或者(最好)使用预先准备好的语句。用它代替对mysqli_query的调用

代码语言:javascript
复制
$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);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30081680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档