Я построил функцию, в которой выполняются два запроса. Оба этих запроса вставляют данные в две отдельные таблицы, данные, связанные с регистрацией пользователя. в одной таблице вещи, как имя пользователя, пароль проводятся и в другой таблице вещи, как адрес, телефон и т.д. ... Вот функция:обработка ошибок при выполнении 2 запросов mysql
function register_biz_user($post,$connection)
{
$name=$connection-> real_escape_string($_POST['name']);
$lastname= $connection->real_escape_string($_POST['lastname']);
$pass_hashed = password::hash($_POST['password']);
$passwd= $connection->real_escape_string($pass_hashed);
$buztype= $connection->real_escape_string($_POST['buztype']);
$usertype= $connection->real_escape_string($_POST['usertype']);
$address= $connection->real_escape_string($_POST['address']);
$city= $connection->real_escape_string($_POST['city']);
$municipality= $connection->real_escape_string($_POST['municipality']);
$url= $connection->real_escape_string($_POST['wwwaddress']);
$email= $connection->real_escape_string($_POST['e-mail']);
$phone= $connection->real_escape_string($_POST['phone']);
$hash =$connection->real_escape_string(md5(rand(0,1000))) ;
$connection->set_charset("utf8");
$result1 = $connection->query("insert into users values
(NULL,'" .$name. "','" .$lastname . "','".$email."','". $passwd."','".
$hash."','". $usertype."')");
if (!$result1) {
throw new Exception('error');
return false;
}
else{$result2=$connection->query("insert into business_users values
('".$connection->insert_id."','" .$address."','".$url ."','".$phone.
"','".$city. "','".$municipality. "','".$buztype. "')");
}
if(!$result2)
{ throw new Exception('error');
return false;}
возвращение правда; }
А вот моя проблема: Если вы посмотрите на код, вы можете заметить, что существует проблема, что первый запрос выполняется без проблем и второй бросает исключение или вице verca.
Я хочу сказать, что существует опасность того, что у db будут ТОЛЬКО частичные данные зарегистрированного пользователя. Цель состоит в том, чтобы либо оба запроса выполнялись успешно, либо не выполнялись.
Как я должен написать вышеприведенный код, чтобы я мог выполнить вышеуказанное утверждение?
Надеюсь, я был достаточно ясен.
использование сделка. –
@ AndyLester: «широко открытый»? копирование сообщения комментария шаблона не всегда является хорошей идеей. в этом случае я не вижу никаких угроз .. –
Возможно, вам захочется взглянуть на изменение готовых инструкций, а не на то, чтобы справляться с задачей избавиться от всего. Подготовленные заявления уменьшают количество вырезанных и вставляемых повторяющихся кодов и тем самым уменьшают вероятность совершения глупой ошибки в будущем, когда вы забываете избежать ввода. –