@Alk90
php, mysql, jquery, css, html, api

Имеет ли смысл такая проверка?

Всем привет! Подскажите плз, правильна ли такая конструкция и точнее нужна ли проверка на существование insert_id?
public function createUserFromSocialId($provider, $social_id, $name, $email){

		$provider 	= $this->db->real_escape_string($provider);
		$social_id 	= intval($social_id);
		$name 		= $this->db->real_escape_string($name);
		$email 		= $this->db->real_escape_string($email);

		if($this->db->query("INSERT INTO `users` (`name`, `email`) VALUE('{$name}','{$email}')")){
			$user_id = $this->db->insert_id;

			if(!empty($user_id)){
				$query = "INSERT INTO `users_social` (`provider`, `social_id`, `user_id`) 
						  VALUE('{$provider}', '{$social_id}','{$user_id}')";

				if($this->db->query($query)){
					return true;
				}

				$this->db->query("DELETE FROM `users` WHERE `id` = {$user_id}");
			}

			
		}

		return false;

	}
  • Вопрос задан
  • 147 просмотров
Решения вопроса 2
BojackHorseman
@BojackHorseman Куратор тега PHP
...в творческом отпуске...
нет. никогда не пляшите в логике от last_insert_id(), это просто локальная переменная, при неудачном insert (по нарушению любого constraint) там все равно останется id последней удачно добавленной записи в сессии(!)
Ответ написан
все, конечно, зависит от бизнес-процесса. если дополнительно какие-то действия необходимо проделать в случае успешного добавления записи, то проверку можно оставить. только б лучше сделать так: в случае пустого insert_id выбросить исключение. а далее продолжать выполнять как есть. в таком случае можно будет избавиться от дополнительной вложенности if.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы