Stack Overflow en español Asked by Adiel on January 28, 2021
Tengo un problema con crear un registro de usuario, lo que trato de hace es que desde los inputs que cree en html se almacene la información en php cree la variable con la información obtenida del input y utilizar esa variable para crear un nuevo usuario en mi Base de Datos con SQL (ya saben lo típico).
Pero al momento de hacer el registro de dice este error
Fatal error: Uncaught Error: Call to a member function prepare() on null on line 15.
Ya verifique pero parece que algo estoy haciendo mal espero haberles brindado todo la información necesaria a continuación el código:
<?php
session_start();
// Datos para conectar a la base de datos.
$nombreServidor = "*********";
$nombreUsuario = "******";
$passwordBaseDeDatos = "*********";
$nombreBaseDeDatos = "******";
// Crear conexión con la base de datos.
$conn = new mysqli($nombreServidor, $nombreUsuario, $passwordBaseDeDatos, $nombreBaseDeDatos);
// registrar usuario
$stmt = $con->prepare("INSERT INTO usuarios (correo,password,nombre,apellido_p,apellido_m,colonia,calle,numero,CP,telefono) VALUES (:email,:contra,:nombre,:Apaterno,:Amaterno,:colonia,:calle,:numero,:CP,:tel)");
//$stmt->bind_param(array($email,$contra,$nombre,$Apaterno,$Amaterno,$colonia,$calle,$numero,$CP,$tel));
$stmt->bindParam(':email', $email);
$stmt->bindParam(':contra', $contra);
$stmt->bindParam(':nombre', $nombre);
$stmt->bindParam(':Apaterno', $Apaterno);
$stmt->bindParam(':contra', $Amaterno);
$stmt->bindParam(':Amaterno', $colonia);
$stmt->bindParam(':calle', $calle);
$stmt->bindParam(':numero', $numero);
$stmt->bindParam(':CP', $CP);
$stmt->bindParam(':tel', $tel);
$email = $_POST['email'];
$contra = $_POST['psw'];
$nombre = $_POST['name'];
$Apaterno = $_POST['apaterno'];
$Amaterno = $_POST['amaterno'];
$colonia = $_POST['colonia'];
$calle = $_POST['calle'];
$numero = $_POST['numero'];
$CP = $_POST['codigop'];
$tel = $_POST['telefono'];
$stmt->execute();
/*$sql = "INSERT INTO usuarios (correo,password,nombre,apellido_p,apellido_m,colonia,calle,numero,CP,telefono) VALUES ('$_POST[email]','$_POST[psw]','$_POST[name]','$_POST[apaterno]','$_POST[amaterno]','$_POST[colonia]','$_POST[calle]','$_POST[numero]','$_POST[codigop]','$_POST[telefono]')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
*/
?>
Si estás construyendo tu conexión a través de una instancia de mysqli, entonces:
bind_param
en lugar de bindParam
que es de la clase PDObind_param
recibe
,
cada una de las variablesprepare
haciendo uso de mysqli usaremos como marcadores el símbolo de ?
en lugar del marcador de parámetrosPrueba tu código así:
<?php
// Datos para conectar a la base de datos.
$passwordBaseDeDatos = "*********";
$nombreBaseDeDatos = "******";
$nombreServidor = "*********";
$nombreUsuario = "******";
// Crear conexión con la base de datos.
$conn = new mysqli($nombreServidor, $nombreUsuario, $passwordBaseDeDatos, $nombreBaseDeDatos);
$Apaterno = $_POST['apaterno'];
$Amaterno = $_POST['amaterno'];
$colonia = $_POST['colonia'];
$contra = $_POST['psw'];
$nombre = $_POST['name'];
$numero = $_POST['numero'];
$email = $_POST['email'];
$calle = $_POST['calle'];
$tel = $_POST['telefono'];
$CP = $_POST['codigop'];
// registrar usuario
if ($stmt = $conn->prepare("INSERT INTO usuarios (
correo,
password,
nombre,
apellido_p,
apellido_m,
colonia,
calle,
numero,
CP,
telefono
)
VALUES (?,?,?,?,?,?,?,?,?,?)
")) {
$stmt->bind_param('sssssssiis', $email, $contra, $nombre, $Apaterno, $Amaterno, $colonia, $calle, $numero, $CP, $tel);
$stmt->execute();
} else {
echo $conn->error;
}
Answered by BetaM on January 28, 2021
<?php
// Datos para conectar a la base de datos.
$nombreServidor = 'mysql:host=localhost;dbname=nombre_BD';
$nombreUsuario = 'nombre_usuario';
$passwordBaseDeDatos = 'constrasena';
// Crear conexión con la base de datos.
$conn = new PDO($nombreServidor, $nombreUsuario, $passwordBaseDeDatos);
$email = $_GET['email'];
$contra = $_GET['psw'];
$nombre = $_GET['name'];
$Apaterno = $_GET['apaterno'];
$Amaterno = $_GET['amaterno'];
$colonia = $_GET['colonia'];
$calle = $_GET['calle'];
$numero = $_GET['numero'];
$CP = $_GET['codigo'];
$tel = $_GET['telefono'];
$sql = 'INSERT INTO `usuarios`(`correo`, `password`, `nombre`, `apellido_p`, `apellido_m`, `colonia`, `calle`, `numero`, `cp`, `telefono`)
VALUES (:email,:contra,:nombre,:Apaterno,:Amaterno,:colonia,:calle,:numero,:CP,:tel)';
// registrar usuario
$stmt = $conn->prepare($sql);
$stmt->bindParam(":email", $email);
$stmt->bindParam(":contra", $contra);
$stmt->bindParam(":nombre", $nombre);
$stmt->bindParam(":Apaterno", $Apaterno);
$stmt->bindParam(":Amaterno", $Amaterno);
$stmt->bindParam(":colonia", $colonia);
$stmt->bindParam(":calle", $calle);
$stmt->bindParam(":numero", $numero);
$stmt->bindParam(":CP", $CP);
$stmt->bindParam(":tel", $tel);
$stmt->execute();
?>
Answered by Kevin Carrillo on January 28, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP