A seguir estão métodos testados, testados e comprovados para verificar se existe uma linha.
(Alguns dos quais eu mesmo uso, ou usei no passado).
Editar: Eu cometi um erro anterior na minha sintaxe onde usei
mysqli_query()
duas vezes. Consulte a(s) revisão(ões). Ou seja:
if (!mysqli_query($con,$query))
que deveria ser lido simplesmente como if (!$query)
. - Peço desculpas por ignorar esse erro.
Observação: Ambos
'".$var."'
e '$var'
Faça a mesma coisa. Você pode usar qualquer um, ambos são sintaxe válida. Aqui estão as duas 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
}
e no seu 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
}
Você também pode usar
mysqli_
com uma declaração 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;
}
}
}
Ou um método PDO com uma declaração 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.";
}
}
?>
- As instruções preparadas devem ser usadas para ajudar a proteger contra uma injeção de SQL.
N.B.:
Ao lidar com formulários e matrizes POST conforme usado/delineado acima, certifique-se de que as matrizes POST contenham valores, que um método POST seja usado para o formulário e atributos nomeados correspondentes para as entradas.
- FYI:os formulários são padronizados para um método GET se não forem explicitamente instruídos.
Observação:
<input type = "text" name = "var">
- $_POST['var']
partida. $_POST['Var']
nenhuma partida. - As matrizes POST diferenciam maiúsculas de minúsculas.
Consultar:
Referências de verificação de erros:
- http://php.net/manual/en/function. relatório de erros.php
- http://php.net/manual/en/mysqli.error. php
- http://php.net/manual/en/pdo. tratamento de erros.php
Observe que as APIs do MySQL não se misturam, caso você esteja visitando esta seção de perguntas e respostas e esteja usando
mysql_
para se conectar (e consultar). - Você deve usar o mesmo desde a conexão até a consulta.
Consulte o seguinte sobre isso:
Se você estiver usando o
mysql_
API e não tiver opção de trabalhar com ela, consulte as seguintes perguntas e respostas no Stack:O
mysql_*
funções estão obsoletas e serão removidas de futuras versões do PHP. - É hora de entrar no século 21.
Você também pode adicionar uma restrição UNIQUE a (uma) linha(s).
Referências:
- 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
- Como verificar se um valor já existe para evitar duplicatas?
- Como adicionar uma chave exclusiva à tabela existente (com linhas não exclusivas)