Хранимая процедура вызывает “Команды из синхронизации” на следующем запросе

Я выполняю запрос с mysql хранимой процедурой:

$AddProf_qr = mysql_query("call AddStudent('$d_Pass', '$d_Titl', '$d_Firs', '$d_Midd',  '$d_Last', '$d_Addr', '$d_City', '$d_Stat', '$d_County',  '$d_Zipc', $d_Gend, '$d_Birh', '$d_Phom', '$d_Phoh', '$d_Phoo', '$d_Email', '$d_Webs', '$d_Natn', '$d_Profsn',  '$d_Compny', '$d_Desig', $d_ProfAcc)", $this->c_remote) or die ("first call" . mysql_error($this->c_remote));

Я, как предполагается, получаю всего один результат вызова: @@ ИДЕНТИФИКАЦИОННЫЕ ДАННЫЕ = число;

$AP_result = mysql_fetch_array($AddProf_qr);
$CurrentSID = $AP_result['@@IDENTITY'];

который хорошо работает. но когда я выполняю другое mysql право запроса на обновление после этого оно дает ошибку при высказывании:

Ошибка: 2014 (CR_COMMANDS_OUT_OF_SYNC) сообщение: Команды из синхронизации; Вы не можете выполнить эту команду теперь

я попытался вставить:

mysql_free_result($AddProf_qr);

но тем не менее то же.

Вызов MySQL выполняется прекрасный, также остальная часть выполнений сценария без вышеупомянутого проблем комментируется. но они не работают одновременно. Мое лучшее предположение, вызов делает что-то, что это портит это.

7
задан DMin 22 February 2010 в 23:38
поделиться

2 ответа

Для начала это отличный источник regexps: http://www.regular-expressions.info . Посетить его, ткнуть и играть вокруг. Далее API java.util. Образец имеет краткий обзор regex узоров.

Вернемся к вашему вопросу: вы хотите сопоставить четыре последовательные группы из четырех цифр, разделенных дефисом. Одна группа из 4 цифр может быть представлена как

\d{4}

Четыре цифры, разделенные дефисом, могут быть представлены как:

\d{4}-\d{4}-\d{4}-\d{4}

Чтобы сделать его короче, можно также представить одну группу из четырех цифр и три последовательные группы из четырех цифр с префиксом дефиса:

\d{4}(-\d{4}){3}

Теперь в Java можно использовать String # matchs () для проверки соответствия последовательности заданному regex.

boolean matches = value.matches("\\d{4}(-\\d{4}){3}");

Обратите внимание, что я избежал обратной косой черты \ другой обратной косой чертой \, поскольку обратная косая черта имеет особое значение в Последовательности . Для представления фактической обратной косой черты необходимо использовать \\.

-121--4903692-

Эй, Джастин, как и вы, я недавно думал о добавлении getters в мой объект домена только для записи ради единичного тестирования, но теперь я убежден, что был неправ. Если предположить, что вы купились на идею домена только для записи, то если у вас вообще есть проблемы, вы просите о неприятностях. Принцип домена только для записи предполагает запуск события из объекта домена или чтение из проекции, написанной объектом домена, или что-то подобное. Как только вы обнажаете объекты, вы начинаете раскрывать «форму» объекта, и, как говорит Грег Янг, «объекты домена имеют поведение, а не форму».

При этом я борюсь с вашим тем же вопросом... Как выполнить модульное тестирование объекта домена только для записи? Вот мой текущий план: Я думаю сделать так, чтобы Объект Домена инициировал Событие Домена, сказав «Эти свойства изменились», и в моем модульном тесте я зарегистрируюсь для него, прежде чем отправить Команду. Ознакомьтесь с публикацией Уди Дахана о доменных событиях здесь , а также смотрите , что говорит Эрик Эванс о доменных событиях .

-121--1570849-

Хранимая процедура возвращает несколько результатов. Смотрите это сообщение

Решение?

  • Используйте mysqli _ multi _ query
  • Прекратите использование древней библиотеки mysql - i in mysqli означает «улучшенный» - с уважительной целью.
8
ответ дан 7 December 2019 в 01:20
поделиться

Хранимая процедура возвращает несколько результатов. См. в этой публикации

Решение?

  • Используйте mysqli _ multi _ query
  • Прекратите использование древней библиотеки mysql - i in mysqli означает "улучшенный" - с уважительной целью.
-121--3950481-

Использование понимания списка

>>> from datetime import date, timedelta
>>> d = [date(2010, 2, 23),date(2010, 2, 24),date(2010, 2, 25),date(2010, 2, 26),date(2010, 3, 1),date(2010, 3, 2)]
>>> date_set=set(d)
>>> missing = [x for x in (d[0]+timedelta(x) for x in range((d[-1]-d[0]).days)) if x not in date_set]

>>> missing
[datetime.date(2010, 2, 27), datetime.date(2010, 2, 28)]
-121--2632568-

Проверьте здесь: http://us3.php.net/manual/en/function.mysql-query.php В комментариях один парень утверждает, что заставил его работать, установив флаг подключения на MYSQL_MULTI_RESULTS (131072).

Но было бы гораздо лучше использовать mysqli...

0
ответ дан 7 December 2019 в 01:20
поделиться
Другие вопросы по тегам:

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