Задать вопрос
vitcorp
@vitcorp

Как проверить существование записи в БД MySQL через PHP?

Итак, суть вопроса. Я получаю имя, фамилию и ИД юзера ВК, авторизирующегося на моем сайте, и записываю их в БД, все записывается верно :D, но если я авторизируюсь на сайте снова, но создается новая строка, такая же как и предыдущая ( клон ).
<?php
header('Content-Type: text/html; charset=utf-8');
$VK_APP_ID = "";
$VK_SECRET_CODE = "";

$user="";
$password="";
$db="";

mysql_connect($host, $user, $password) or die("MySQL сервер недоступен!".mysql_error());
mysql_select_db($db) or die("Нет соединения с БД".mysql_error());
mysql_set_charset('utf8');

if(!empty($_GET['code'])) {
 
  $vk_grand_url = "https://api.vk.com/oauth/access_token?client_id=".$VK_APP_ID."&client_secret=".$VK_SECRET_CODE."&code=".$_GET['code']."&redirect_uri=http://vhost25708.cpsite.ru/vklogin.php";
 
 // отправляем запрос на получения access token
  $resp = file_get_contents($vk_grand_url);
  $data = json_decode($resp, true);
  $vk_access_token = $data['access_token'];
  $vk_uid =  $data['user_id'];
  
// обращаемся к ВК Api, получаем имя, фамилию и ID пользователя вконтакте
// метод users.get
  $res = json_decode(file_get_contents("https://api.vk.com/method/users.get?uids={$vk_uid}&access_token={$vk_access_token}&fields=uid,first_name,last_name,photo"));
  $first_name = $res->response[0]->first_name;
  $last_name = $res->response[0]->last_name;
  $photo = $res->response[0]->photo;
  $uid = $res->response[0]->uid;
  echo "Имя : $first_name <br> Фамилия : $last_name <br> ID : $uid <br> Токен : $vk_access_token <br> <img src='$photo'>";
//  echo "<img src='$photo'>";

if (isset($first_name) && isset($last_name) && isset($uid)) {
	
    $result_add = mysql_query("INSERT INTO easy_clients (first_name, last_name, uid) VALUES ('$first_name', '$last_name', '$uid')");

    if ($result_add == 'true') {
        echo "<p>Успешно добавлено в базу</p>";
    } else {
        echo "<p>Не добавлено в базу</p>";
		echo mysql_errno() . ": " . mysql_error() . "\n";
    }
}

}
?>

Вопрос, как проверить существование записи в БД MySQL через PHP и если запись есть то ничего не делать, а если нету то создать???
  • Вопрос задан
  • 2834 просмотра
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
@entermix
$result_add = mysql_query("INSERT IGNORE INTO easy_clients (first_name, last_name, uid) VALUES ('$first_name', '$last_name', '$uid')");

https://dev.mysql.com/doc/refman/5.5/en/insert.html

В случае присутствия записи, вставка не будет произведена

Или так:
https://dev.mysql.com/doc/refman/5.5/en/insert-on-...
В случае, если запись уже есть, она будет обновлена

Или же так, проверить (сделать выборку SELECT)
https://dev.mysql.com/doc/refman/5.5/en/select.html

Как это сделать на PHP? В интернете есть огромное количество информации

UPD: Естественно первые 2 пункта будут работать только если у Вас выставлены правильные индексы (UNIQUE uid) в таблице
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы