0

私は検索して検索しましたが、間違っていることを見つけることができないので、これが私の最初の StackOverflow の質問です。

アドレス テーブルの対応するアドレスの ID など、エンティティに関する情報を取得するためにエンティティ テーブルにクエリを実行しようとしていますが、クエリを 1 つしか作成できません。2 番目のクエリでは、「データベースが選択されていません」というエラーが表示されます。テストのために、構文エラーではないことを確認するためにまったく同じ関数を2回使用してみました。これが得られた結果です。

名前:ウルフ、ドミトリー

2 番目に同じクエリを試行します。

データベースが選択されていません

このコードから:

$entity_id=1;
$row = getEntityById($entity_id);
echo "<p>name:" . $row['entity_name'] . "</p>";

echo "<p>second try to same query:</p>";
$row = getEntityById($entity_id);
echo "<p>name:" . $row['entity_name'] . "</p>";

function dbConnect ()
{
    require_once ('dogs.php');
    try {
        $conn = new PDO("mysql:host=$host;dbname=$db", $user, $pwd);
        return $conn;
    } catch (PDOException $e) {
        return null;
    }
}

function getEntityById ($id)
{
    unset($conn);
    $conn=dbConnect();
    $sql = "select * from entity where id = $id";
    $result = $conn->query($sql);
    $error = $conn->errorInfo();
    if (isset($error[2])) die($error[2]);

    $numRows = $result->fetchColumn();
    $result->closeCursor();

    $theRow = null;
    foreach ($conn->query($sql) as $row) {
        $theRow = $row;
    }

    return $theRow;
}

何が間違っているのかわかりません。Close Cursor は役に立たないようです。誰にもアイデアはありますか?ありがとう。

4

1 に答える 1

1

ドミトリ、require_once ('dogs.php'); を変更するだけです。要求する ('dogs.php');

問題は、関数を呼び出すたびに dogs.php ファイルが必要になることですが、ご存じのとおり、require_once は実行時に 1 回だけファイルを呼び出します。それを変更するだけで、正常に動作するはずです。

乾杯、

于 2013-05-12T23:42:34.437 に答える