Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá! Boa tarde.
Estou fazendo um formulário de cadastro (bem simples) com PHP e MySQLi, porém não consigo exito para inserir os dados no meu Banco de Dados . Quando esta utilizando o MySQL estava inserido o conteúdo digitado nos campos do formulário, porém na página do formulário (atrás do formulário aparecia o alerta de que o MySQL estava obsoleto e pedia para utilizar o MySQLi ou PDO). Então fui pesquisar sobre o MySQLi sobre como "transformar o mysql em msqli". Consegui fazer a conexão com o Bando de Dados com MySQLi, porém não esta inserindo o conteúdo no Banco de Dados. Fiz vários testes de formulários de cadastro com msqli (que encontrei nas pesquisas na internet), li o manual do MySQLi tbm, mas ainda continuo com essa dificuldade.
Abaixo o código que utilizei:
Conexão:
<?php
$hostname_conecta_site = "localhost";
$database_conecta_site = "conexão";
$username_conecta_site = "Admin";
$password_conecta_site = "minha senha";
$conecta = mysqli_connect($hostname_conecta_site, $username_conecta_site, $password_conecta_site) or trigger_error(mysqli_error(),E_USER_ERROR);
?>
Formulário:
<?php require_once('../../Connections/conecta_site.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($theValue) : mysqli_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
$insertSQL = sprintf("INSERT INTO newsletter (nome, email) VALUES (%s, %s)",
GetSQLValueString($_POST['nome'], "text"),
GetSQLValueString($_POST['email'], "text"));
mysqli_select_db($database_conecta_site, $conecta_site);
$Result1 = mysqli_query($insertSQL, $conecta_site) or die(mysqli_error());
$insertGoTo = "newsletter.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
<link href="css/estilos.css" rel="stylesheet" type="text/css" />
<form method="POST" name="form" action="<?php echo $editFormAction; ?>"POST" >
<ul>
<li> <label class="name_newsletter" for="name">Nome:</label> <input type="nome" class="news_footer_name" name="nome" id="nome" maxlength="100" /></li>
<li> <label class="email_newsletter" for="email">E-mali:</label> <input type="email" class="news_footer_mail" name="email" id="email" maxlength="100"/></li>
<input class="btn_newsletter" type="submit" value="Cadastrar" id="btnSend">
<input type="hidden" name="MM_insert" value="newsletter" />
<input type="hidden" name="MM_update" value="newsletter" />
<input type="hidden" name="MM_insert" value="form" />
</form>
</ul>
Os alertas de erro que aparecem são :
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\wamp64\www\meusite\arquivos\form.php on line 10
Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\wamp64\www\meusite\arquivos\form.php on line 44
Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\wamp64\www\meusite\arquivos\form.php on line 45
Mas eu não estou sabendo identificar os parâmetros que faltam e onde os acrescentar.
Obs.:Estou utilizando o Dreamweaver CS6 e o Wampserver.
Esses códigos acima formam os que ao menos consegui estabelecer a conexão.
Gostaria do auxilio de vocês para resolver esse problema.
Agradeço a atenção!Obrigada por responder! Vou verificar o link que você indicou e fazer a correção indicada e logo volto aqui para comentar.
O link irá abrir um site que contém o seu código corrigido, é tipo um bloco de notas, usei para não poluir o tópico com códigos imensos.
Obrigada tbm pela dica do site, eu acabei colocando o código grande aqui no tópico me desculpem =^^=
Fiz a modificação indicada, mas ainda aparece o erro que indicado que é esperado 2 parâmetros e variáveis indefinidas.
Eu teria que trocar as alguma variável na parte mysqli_real_escape_string($theValue)?
Agradeço a atenção.
A função mysqli_real_escape_string deve ser chamada dessa forma: string mysqli_real_escape_string ( mysqli $link , string $escapestr )
Sendo assim, acompanhe as mudanças no código.
Obrigada. Agora é indicado que uma variável esta indefinida :
Notice: Undefined variable: conecta in C:\wamp64\www\arquivos\form.php on line 11
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in C:\wamp64... on line 11
Notice: Undefined variable: link in C:\wamp64... on line 47
Warning: mysqli_select_db() expects parameter 1 to be mysqli, null given in C:\wamp64... on line 47
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\wamp64...on line 51
Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\wamp64... on line 51
Eu teria que definir uma outra variável? No caso para o $theValue do mysqli_real_escape_string($conecta, $theValue);?
>
1 minuto atrás, BelleFisio disse:
Notice: Undefined variable: conecta_site in C:\wamp64\www\Maktub\arquivos\form.php on line 11
Por que está colocando a variável conecta_site? Ela não existe no seu arquivo de configuração, a que existe é: conecta.
Arrume essa que o resto irá funcionar, verifique se está conseguindo pegar essa variável pelo: include "../../Connections/conecta_site.php";
Acho que colocou o caminho errado, ou apenas o nome da variável mesmo. O nome da sua variável é: *$**conecta*. Conforme tem no seu arquivo de conexão. Se tiver skype e TeamViewer... Fica até melhor de ajudar.
Desculpe esse eu copiei do erro do exemplo (teste que fiz acompanhando o passo a passo do código que uma amiga me passou e acabei confundindo na hora de postar aqui pois as duas págs estavam abertas) depois eu mudei o nome para o meu site) Mas esta tudo certinho. Com a variável $conecta
Notice: Undefined variable: conecta in C:\wamp64\www\arquivos\form.php on line 11
Me desculpe o engano.
Então está tudo certo? Deu certo as mudanças? Está operante?
Sim o include esta correto tbm.
Não os erros continuam, sempre é indicado que falta definir uma variável. E ainda não insere os dados no banco de dados.
Agradeço a paciência.
Que bom! Qualquer coisa o fórum está aqui pra te ajudar. Peço que coloque a tag [Resolvido] no começo do nome do tópico. Se te ajudei, não esquece de marcar +1
O que copiei errado foi inserir o erro relatado em uma outra página (a de texte aqui no tópico), mas isso aconteceu porque as duas páginas estavam abertas e acabei confundindo por ser o mesmo erro.
Acho que não deu para entender a minha explicação. O erro permanece, Não foi resolvido o problema. Se puder deixar o tópico em aberto eu agradeço, pois não consegui resolver o problema
Mas mesmo assim eu agradeço sua atenção
>
3 minutos atrás, Jesse&Francinete disse:
Que bom! Qualquer coisa o fórum está aqui pra te ajudar. Peço que coloque a tag [Resolvido] no começo do nome do tópico. Se te ajudei, não esquece de marcar +1
Infelizmente o erro não foi resolvido. Por gentileza, não feche o tópico.
Mas mesmo assim eu agradeço sua atenção e por ter despendido tempo para tentar me ajudar no problema.
Quais erros aparecem?
Então os erros são esses:
Notice: Undefined variable: conecta in C:\wamp64\www\arquivos\form.php on line 11
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in C:\wamp64... on line 11
Notice: Undefined variable: link in C:\wamp64... on line 47
Warning: mysqli_select_db() expects parameter 1 to be mysqli, null given in C:\wamp64... on line 47
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\wamp64...on line 51
Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\wamp64... on line 51
https://pastebin.com/9cXR6kj8
Corrigi, onde tem os marcadores: //Inicia aqui | //Termina aqui
Foi onde mexi, se der certo ou errado, comenta aí para podermos te ajudar.