1

これに対する答えを見つけることはできません。mysqli ループ ステートメントがあります。そして、そのループで別のクエリを実行したいと思います。これら2つのSQLを一緒に書くことはできません。それは可能ですか?stmt を使用してステートメントを準備するように設定したので、私は考えました。だから私は別の変数 stmt2 を追加します。それらを別々に実行すると動作しますが、私が書いたように実行すると、「mysqli Fatal error: Call to a member function bind_param() on a non-object」が表示されます

擬似コード:

loop_sql_Statement {
    loop_another_sql_statement(variable_from_firsT_select) {
       echo "$first_statement_variables    $second_statemenet_variables";
    }
}
                $sql = "select dyr_id, dyr_navn, type_navn, dyr_rase_id, dyr_fodt_aar, dyr_kommentar, dyr_opprettet, dyr_endret
                    from dyr_opphald, dyr, dyr_typer
                    where dyropphald_dyr_id = dyr_id
                    and dyr_type_id = type_id
                    and dyropphald_opphald_id = ?";

            $stmt = $mysqli->prepare($sql);
            $stmt->bind_param("i",
             $p_opphald_id);
            $stmt->execute(); 

            $stmt->bind_result($dyr_id, $dyr_navn, $type_navn, $dyr_rase_id, $dyr_fodt_aar, $dyr_kommentar, $dyr_opprettet, $dyr_endret);

            echo "<table>";
            while($stmt->fetch()) {
                echo "<tr><td>$dyr_navn</td><td>$type_navn</td><td>$dyr_rase_id</td><td>$dyr_fodt_aar</td><td>";

                $sql2 = "select ekstra_ledetekst, ekstradyr_ekstra_verdi from dyr_ekstrainfo, ekstrainfo where ekstradyr_ekstra_id = ekstra_id and ekstradyr_dyr_id = ?";
                try {

                    $stmt2 = $mysqli->prepare($sql2);
                    $stmt2->bind_param("i",
                     $dyr_id);
                    $stmt2->execute(); 

                    $stmt2->bind_result($ekstra_ledetekst, $ekstra_ledetekst);
                    echo "<td>";
                    while($stmt2->fetch()) {
                        echo "$ekstra_ledetekst => $ekstra_ledetekst<br>";
                    }
                }catch (Exception $e) {}
                echo "</td></tr>";
            }
            echo "</table>";

答え:

愚かな私は、2 つの mysqli 接続が必要であることを知りませんでした。したがって、解決策は、別の mysqli 接続を宣言することでした。

$mysqli = new mysqli($start, $name, $pwd, $selected_db);
$mysqli2 = new mysqli($start, $name, $pwd, $selected_db);
4

1 に答える 1

0

2 番目の接続を開始する必要がありますが、それができるはずです。

于 2014-01-15T23:46:20.803 に答える