web-dev-qa-db-fra.com

Comment vérifier si la valeur existe dans une base de données MySQL

Supposons que j'ai cette table:

id | name | city
------------------
1  | n1   | c1
2  | n2   | c2
3  | n3   | c3
4  | n4   | c4

Je veux vérifier si la valeur c7 existe sous la variable city ou non. 

Si c'est le cas, je ferai quelque chose.
.__ Si ce n'est pas le cas, je ferai autre chose.

25
Hatim

manière préférée, en utilisant l'extension 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();

obsolète:

$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...
}
60
Reinder Wit

Pour correspondance exacte

"SELECT * FROM yourTable WHERE city = 'c7'"

Pour la recherche de modèle/caractère générique

"SELECT * FROM yourTable WHERE city LIKE '%c7%'"

Bien sûr, vous pouvez modifier '%c7%' en '%c7' ou 'c7%' en fonction de la manière dont vous souhaitez effectuer une recherche. Pour une correspondance exacte, utilisez le premier exemple de requête.

PHP

$result = mysql_query("SELECT * FROM yourTable WHERE city = 'c7'");
$matchFound = mysql_num_rows($result) > 0 ? 'yes' : 'no';
echo $matchFound;

Vous pouvez également utiliser la condition if à cet endroit.

14
Blaster

En supposant que la connexion est établie et disponible dans une portée globale;

//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;
    }
}

Utilisation: En supposant que la valeur à vérifier soit stockée dans la variable $ username;

if (record_exists ( 'employee', 'username', $username )){
    echo "Username is not available. Try something else.";
} else {
    echo "Username is available";
}
1
user1979610

J'ai essayé de le faire pendant un moment et $sqlcommand = 'SELECT * FROM database WHERE search="'.$searchString.'";';
$sth = $db->prepare($sqlcommand); $sth->execute(); $record = $sth->fetch(); if ($sth->fetchColumn() > 0){}
ne fonctionne que s’il ya deux entrées identiques, mais si vous remplacez if ($sth->fetchColumn() > 0){} with if ($result){}it fonctionne avec un seul enregistrement correspondant. J'espère que cela vous aidera. 

0
mushkincode
SELECT
    IF city='C7'
    THEN city
    ELSE 'somethingelse'
    END as `city`
FROM `table` WHERE `city` = 'c7'
0
Muhammad Raheel