Как проверить, существует ли значение в базе данных MySQL
Предположим, что у меня есть эта таблица:
id | name | city
------------------
1 | n1 | c1
2 | n2 | c2
3 | n3 | c3
4 | n4 | c4
Я хочу проверить, существует ли значение c7
под переменной city
или нет.
Если ответ "да", я сделаю что-нибудь.
Если ответ "нет", я сделаю что-то еще.
Ответы
Ответ 1
используя расширение 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();
осуждается:
$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...
}
Ответ 2
Для точного соответствия
"SELECT * FROM yourTable WHERE city = 'c7'"
Для поиска шаблонов/подстановок
"SELECT * FROM yourTable WHERE city LIKE '%c7%'"
Конечно, вы можете изменить '%c7%'
на '%c7'
или 'c7%'
в зависимости от того, как вы хотите его искать. Для точного соответствия используйте первый пример запроса.
PHP
$result = mysql_query("SELECT * FROM yourTable WHERE city = 'c7'");
$matchFound = mysql_num_rows($result) > 0 ? 'yes' : 'no';
echo $matchFound;
Вы также можете использовать условие if
.
Ответ 3
Предполагая, что соединение установлено и доступно в глобальной области;
//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;
}
}
Использование:
Предполагая, что проверяемое значение сохраняется в переменной $username;
if (record_exists ( 'employee', 'username', $username )){
echo "Username is not available. Try something else.";
} else {
echo "Username is available";
}
Ответ 4
SELECT
IF city='C7'
THEN city
ELSE 'somethingelse'
END as `city`
FROM `table` WHERE `city` = 'c7'
Ответ 5
Я пытался это сделать некоторое время и $sqlcommand = 'SELECT * FROM database WHERE search="'.$searchString.'";';
$sth = $db->prepare($sqlcommand);
$sth->execute();
$record = $sth->fetch();
if ($sth->fetchColumn() > 0){}
просто работает, если есть ДВА одинаковых записей, но,
если вы замените if ($sth->fetchColumn() > 0){}
с if ($result){}
он работает только с одной подходящей записью, надеюсь, что это поможет.