Boa tarde pessoal, o tratamento do Login deu certo SQL Injection, mas quando insiro um novo produto por ex.: Bola d'agua ou Monitor LG 17" (aspas duplas) ou Monitor LG 17'' (aspas simples) acontece o erro na minha inserção. Sei que é devido o ' " como eu trato esse problema?
Erro ao inserir o Produto. Erro inserção nos campos: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'agua', '45', 'bola', '1', '1')' at line 1
Tentei tratar dessa forma... igual foi realizado no login mas não deu certo.
$produto = mysqli_real_escape_string($conexao,$produto);
$descricao = mysqli_real_escape_string($conexao,$descricao);
$preco = mysqli_real_escape_string($conexao,$preco);
todas as pesquisas que procurei informa sobre login (usuário e senha), não sobre a inserção de produtos com aspas simples(') e outras. Tentei usar o str_replace, mas não deu certo...
function insereProduto($conexao, $produto, $preco, $descricao, $usado, $categoria){
$query = str_replace("insert into produtos (nome, preco, descricao, usado, categoria_id) values ('{$produto}', '{$preco}', '{$descricao}', '{$usado}', '{$categoria}')");
return mysqli_query($conexao,$query);
}
Olhei no site: http://br2.php.net/manual/pt_BR/language.types.string.php e não entendi muito bem... Olhei as funções ( htmlspecialchars_decode e addslashes).
$produto = htmlspecialchars_decode("nome");
$descricao = htmlspecialchars_decode("descricao");
$query = "insert into produtos (nome, preco, descricao, usado, categoria_id) values ('{$produto}', '{$preco}', '{$descricao}', '{$usado}', '{$categoria}')";
return mysqli_query($conexao,$query);
OU
$produto = addslashes("nome");
$descricao = addslashes("descricao");
$query = "insert into produtos (nome, preco, descricao, usado, categoria_id) values ('{$produto}', '{$preco}', '{$descricao}', '{$usado}', '{$categoria}')";
return mysqli_query($conexao,$query);
Ambas funcionou a inserção no Banco de Dados , mas não aparece na lista o nome e a descrição do produto. Fica em branco... mas insere no BD
Pode me explicar melhor ou Há uma outra forma de tratar (', ", /. ) e aparece os nomes normalmente?