php - usuario - validar si un registro existe en la base de datos
Cómo verificar si el valor existe en una base de datos MySQL (5)
Supongamos que tengo esta tabla:
id | name | city
------------------
1 | n1 | c1
2 | n2 | c2
3 | n3 | c3
4 | n4 | c4
Quiero verificar si el valor c7
existe en la city
variable o no.
Si lo hace, haré algo.
Si no es así, haré otra cosa.
Para el partido exacto
"SELECT * FROM yourTable WHERE city = ''c7''"
Para búsqueda de patrón / comodín
"SELECT * FROM yourTable WHERE city LIKE ''%c7%''"
Por supuesto, puedes cambiar ''%c7%''
a ''%c7''
o ''c7%''
dependiendo de cómo quieras buscarlo. Para una coincidencia exacta, use el primer ejemplo de consulta.
PHP
$result = mysql_query("SELECT * FROM yourTable WHERE city = ''c7''");
$matchFound = mysql_num_rows($result) > 0 ? ''yes'' : ''no'';
echo $matchFound;
También se puede utilizar if
condición allí.
Forma preferida, utilizando la extensión MySQLi:
$mysqli = new mysqli(SERVER, DBUSER, DBPASS, DATABASE);
$result = $mysqli->query("SELECT id FROM mytable WHERE city = ''c7''");
if($result->num_rows == 0) {
// row not found, do stuff...
} else {
// do other stuff...
}
$mysqli->close();
obsoleto:
$result = mysql_query("SELECT id FROM mytable WHERE city = ''c7''");
if(mysql_num_rows($result) == 0) {
// row not found, do stuff...
} else {
// do other stuff...
}
Intenté hacer esto durante un tiempo y $sqlcommand = ''SELECT * FROM database WHERE search="''.$searchString.''";'';
$sth = $db->prepare($sqlcommand); $sth->execute(); $record = $sth->fetch(); if ($sth->fetchColumn() > 0){}$sqlcommand = ''SELECT * FROM database WHERE search="''.$searchString.''";'';
$sth = $db->prepare($sqlcommand); $sth->execute(); $record = $sth->fetch(); if ($sth->fetchColumn() > 0){}$sqlcommand = ''SELECT * FROM database WHERE search="''.$searchString.''";'';
simplemente funciona si hay DOS entradas idénticas, pero si reemplaza
$sth = $db->prepare($sqlcommand); $sth->execute(); $record = $sth->fetch(); if ($sth->fetchColumn() > 0){}if ($sth->fetchColumn() > 0){}
con if ($result){}
funciona con un solo registro coincidente, espero que esto ayude.
Suponiendo que la conexión esté establecida y esté disponible en el ámbito global;
//Check if a value exists in a table
function record_exists ($table, $column, $value) {
global $connection;
$query = "SELECT * FROM {$table} WHERE {$column} = {$value}";
$result = mysql_query ( $query, $connection );
if ( mysql_num_rows ( $result ) ) {
return TRUE;
} else {
return FALSE;
}
}
Uso: Suponiendo que el valor a verificar se almacena en la variable $ username;
if (record_exists ( ''employee'', ''username'', $username )){
echo "Username is not available. Try something else.";
} else {
echo "Username is available";
}
SELECT
IF city=''C7''
THEN city
ELSE ''somethingelse''
END as `city`
FROM `table` WHERE `city` = ''c7''