Проблема с 2-х одновременным соединением с PDO / Mysql - PullRequest
0 голосов
/ 08 июля 2011

Вот мой упрощенный код:

$connexion = new PDO(SQL_DSN,SQL_USERNAME,SQL_PASSWORD);
$connexion2 = new PDO(SQL_DSN2,SQL_USERNAME2,SQL_PASSWORD2);

[...]

$sqlIndex = "SELECT index_key,index_platforms_code
             FROM   index
             WHERE  index_missions_id = :mission";
$initFiches = $connexion->prepare($sqlIndex);
$initFiches->bindParam(":mission" , $_GET['mission']);
$initFiches->execute();
try 
{
    while ($fiche = $initFiches->fetch(PDO::FETCH_ASSOC))
    {
        print_r($fiche);

        foreach ($structure['champs'] as $masterChamp)
        {
            //$stmt = $connexion2->prepare($masterChamp['sql']);
        }
    }
}
    catch (exception $e)
    {
        echo "error".$e->getMessage();

    }

Мой вывод:

Array
(
    [index_key] => 1
    [index_platforms_code] => 1
)
Array
(
    [index_key] => 2
    [index_platforms_code] => 2
)
Array
(
    [index_key] => 3
    [index_platforms_code] => 3
)
Array
(
    [index_key] => 4
    [index_platforms_code] => 4
)

Хорошо, но если я раскомментирую эту строку

$stmt = $connexion2->prepare($masterChamp['sql']);

вforeach, эта строка прервала некоторое время, и вот новый вывод:

Array
(
    [index_key] => 1
    [index_platforms_code] => 1
)

У кого-то есть идея?

1 Ответ

0 голосов
/ 08 июля 2011

Вот решение, которое не включает в себя 2 соединения и является более оптимизированным.

$connexion = new PDO(SQL_DSN,SQL_USERNAME,SQL_PASSWORD);
$sqlIndex = "SELECT index_key,index_platforms_code
             FROM   index
             WHERE  index_missions_id = :mission";

$initFiches = $connexion->prepare($sqlIndex);

$initFiches->bindParam(":mission" , $_GET['mission'], PDO::PARAM_STR);

$initFiches->execute();

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

$stmt = $connexion->prepare("SELECT ...."); // Prepare outside of the loop, you don't have to prepare it X times, once is enough.

if(sizeof($data))
{
    foreach($data as $row)
    {
        // Do your statement binding / executing.    
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...