Los siguientes son métodos probados y probados para verificar si existe una fila.
(Algunos de los cuales uso yo mismo o he usado en el pasado).
Editar: Cometí un error anterior en mi sintaxis donde usé mysqli_query()
dos veces. Por favor consulte la(s) revisión(es).
Es decir:
if (!mysqli_query($con,$query))
que debería haberse leído simplemente como if (!$query)
.
- Me disculpo por pasar por alto ese error.
Nota al margen: Ambos '".$var."'
y '$var'
hacer la misma cosa. Puede usar cualquiera de los dos, ambos son sintaxis válida.
Aquí están las dos consultas editadas:
$query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($con));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
y en tu caso:
$query = mysqli_query($dbl, "SELECT * FROM `tblUser` WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($dbl));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
También puede usar mysqli_
con una declaración preparada
método:
$query = "SELECT `email` FROM `tblUser` WHERE email=?";
if ($stmt = $dbl->prepare($query)){
$stmt->bind_param("s", $email);
if($stmt->execute()){
$stmt->store_result();
$email_check= "";
$stmt->bind_result($email_check);
$stmt->fetch();
if ($stmt->num_rows == 1){
echo "That Email already exists.";
exit;
}
}
}
O un método PDO con una declaración preparada :
<?php
$email = $_POST['email'];
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';
try {
$conn= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit( $e->getMessage() );
}
// assuming a named submit button
if(isset($_POST['submit']))
{
try {
$stmt = $conn->prepare('SELECT `email` FROM `tblUser` WHERE email = ?');
$stmt->bindParam(1, $_POST['email']);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
}
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
if($stmt->rowCount() > 0){
echo "The record exists!";
} else {
echo "The record is non-existant.";
}
}
?>
- Las declaraciones preparadas son mejores para ayudar a proteger contra una inyección SQL.
N.B.:
Cuando trabaje con formularios y matrices POST como se usa/describió anteriormente, asegúrese de que las matrices POST contengan valores, que se use un método POST para el formulario y que coincidan los atributos con nombre para las entradas.
- FYI:los formularios tienen un método GET predeterminado si no se indica explícitamente.
Nota:<input type = "text" name = "var">
- $_POST['var']
partido. $_POST['Var']
Sin coincidencia.
- Las matrices POST distinguen entre mayúsculas y minúsculas.
Consultar:
Error al verificar las referencias:
- http://php.net/manual/en/function. informe de errores.php
- http://php.net/manual/en/mysqli.error. php
- http://php.net/manual/en/pdo. manejo de errores.php
Tenga en cuenta que las API de MySQL no se entremezclan, en caso de que esté visitando estas preguntas y respuestas y esté usando mysql_
para conectarse con (y consultar con).
- Debe usar el mismo desde la conexión hasta la consulta.
Consulta lo siguiente al respecto:
Si está utilizando mysql_
API y no tiene otra opción para trabajar con ella, consulte las siguientes preguntas y respuestas en Stack:
El mysql_*
Las funciones están en desuso y se eliminarán de futuras versiones de PHP.
- Es hora de entrar en el siglo XXI.
También puede agregar una restricción ÚNICA a (una) fila(s).
Referencias:
- http://dev.mysql. com/doc/refman/5.7/en/constraint-primary-key.html
- http://dev.mysql.com/ doc/refman/5.7/en/alter-table.html
- ¿Cómo verificar si un valor ya existe para evitar duplicados?
- Cómo agregar una clave única a una tabla existente (con filas no únicas)