Вот такой код работает:
Код
//Готовим запрос для получения наименования таблицы
$qryTableName = $pdo->prepare("select NAME from SYS_SYNC_TABLES where ID = :ID");
$qryTableName->bindParam('ID', $tableID, PDO::PARAM_INT);
//Готовим запрос по столбцам синхронизации
$qryColumns = $pdo->prepare("call SYS_GET_SYNC_TABLE_COLUMNS(:TABLE_ID)");
$qryColumns->bindParam('TABLE_ID', $tableID, PDO::PARAM_INT);
$tableID = 1;
$qryTableName->execute();
$res = $qryTableName->fetch();
if ($res)
echo "<br>*** Таблица ".$res[NAME]." (ID = $tableID) ***<br>";
$tableID = 2;
$qryTableName->execute();
$res = $qryTableName->fetch();
if ($res)
echo "<br>*** Таблица ".$res[NAME]." (ID = $tableID) ***<br>";
$qryTableName = $pdo->prepare("select NAME from SYS_SYNC_TABLES where ID = :ID");
$qryTableName->bindParam('ID', $tableID, PDO::PARAM_INT);
//Готовим запрос по столбцам синхронизации
$qryColumns = $pdo->prepare("call SYS_GET_SYNC_TABLE_COLUMNS(:TABLE_ID)");
$qryColumns->bindParam('TABLE_ID', $tableID, PDO::PARAM_INT);
$tableID = 1;
$qryTableName->execute();
$res = $qryTableName->fetch();
if ($res)
echo "<br>*** Таблица ".$res[NAME]." (ID = $tableID) ***<br>";
$tableID = 2;
$qryTableName->execute();
$res = $qryTableName->fetch();
if ($res)
echo "<br>*** Таблица ".$res[NAME]." (ID = $tableID) ***<br>";
Т.е. выдаются данные для двух таблиц:
Код
*** Таблица SYS_SYNC_TABLES (ID = 1) ***
*** Таблица SYS_SYNC_COLUMNS (ID = 2) ***
*** Таблица SYS_SYNC_COLUMNS (ID = 2) ***
А вот если добавить между двумя вызовами $qryTableName->execute(); еще вызов $qryColumns->execute();... Вот так:
Код
//Готовим запрос для получения наименования таблицы
$qryTableName = $pdo->prepare("select NAME from SYS_SYNC_TABLES where ID = :ID");
$qryTableName->bindParam('ID', $tableID, PDO::PARAM_INT);
//Готовим запрос по столбцам синхронизации
$qryColumns = $pdo->prepare("call SYS_GET_SYNC_TABLE_COLUMNS(:TABLE_ID)");
$qryColumns->bindParam('TABLE_ID', $tableID, PDO::PARAM_INT);
$tableID = 1;
$qryTableName->execute();
$res = $qryTableName->fetch();
if ($res)
echo "<br>*** Таблица ".$res[NAME]." (ID = $tableID) ***<br>";
/*!!!!!!*/$qryColumns->execute();
$tableID = 2;
$qryTableName->execute();
$res = $qryTableName->fetch();
if ($res)
echo "<br>*** Таблица ".$res[NAME]." (ID = $tableID) ***<br>";
$qryTableName = $pdo->prepare("select NAME from SYS_SYNC_TABLES where ID = :ID");
$qryTableName->bindParam('ID', $tableID, PDO::PARAM_INT);
//Готовим запрос по столбцам синхронизации
$qryColumns = $pdo->prepare("call SYS_GET_SYNC_TABLE_COLUMNS(:TABLE_ID)");
$qryColumns->bindParam('TABLE_ID', $tableID, PDO::PARAM_INT);
$tableID = 1;
$qryTableName->execute();
$res = $qryTableName->fetch();
if ($res)
echo "<br>*** Таблица ".$res[NAME]." (ID = $tableID) ***<br>";
/*!!!!!!*/$qryColumns->execute();
$tableID = 2;
$qryTableName->execute();
$res = $qryTableName->fetch();
if ($res)
echo "<br>*** Таблица ".$res[NAME]." (ID = $tableID) ***<br>";
То второй вызов $qryTableName->execute(); уже не срабатывает и возвращается одна строка:
Код
*** Таблица SYS_SYNC_TABLES (ID = 1) ***
Может кто-нибудь подскажет в чем тут дело?
Спустя 8 часов, 17 минут, 57 секунд (27.03.2008 - 11:59) Драгон написал(а):
Дайте угадаю, ОС виндовс?
Спустя 14 часов, 17 минут, 17 секунд (28.03.2008 - 02:16) mlitkin написал(а):
Цитата(Драгон @ 27.3.2008, 18:59) [snapback]35725[/snapback]
Дайте угадаю, ОС виндовс?
Именно. А в чем здесь проблема?
Спустя 17 часов, 4 минуты, 1 секунда (28.03.2008 - 19:20) lenich написал(а):
Цитата
Именно. А в чем здесь проблема?
Вот вот.
Цитата
$qryTableName = $pdo->prepare("select NAME from SYS_SYNC_TABLES where ID = :ID");
...
$qryColumns = $pdo->prepare("call SYS_GET_SYNC_TABLE_COLUMNS(:TABLE_ID)");
...
$qryColumns = $pdo->prepare("call SYS_GET_SYNC_TABLE_COLUMNS(:TABLE_ID)");
и тут и тут хендлер базы $pdo - естественно, что у вас вылетает при 2 запросе ибо хендлер то один - пытаетесь 2 трамвая пустить одновременно по одной колее вот они и сталкиваются. Запрос с qryColumns делайте с помощью отдельного подключения к бд, либо после всех операций с qryTableName.
Цитата
$qryColumns = $pdo2->prepare("call SYS_GET_SYNC_TABLE_COLUMNS(:TABLE_ID)");
- ну поняли короче.