两个DB::getIntance()在同一页面上运行


Two DB::getIntance() running on the same page

嗨,我只想知道是否可以在同一页面上同时对查询中的DB::getInstance()值进行不同的查询? 这样做是好的做法吗? 如果不是,你能告诉我最佳实践吗?

我有更新页面(update.php)在我的更新页面上,我查询了您将在数据库中获取id的部分。

这工作正常。

$id = $_GET['id'];   
$agent = DB::getInstance()->get('agent', array('id', '=', $id));

在我的更新下方.php页面是一个下拉字段,它将在其中查询我的表数据的某些部分。 例如,它是该用户所属的控制器表。

但它不起作用。

            $directors = $dbh->query("SELECT * FROM directors");

             echo "<select name='director' id='director'>
                    <option value=''>".$agent->results()[0]->agent_name."</option>";
             foreach($directors->results() as $director){
                echo "<option value='$director->name'>".$director->name."</option>";
             }
             echo "</select>";

谢谢

虽然不可能直接回答你的问题,但有一些方向

  1. 不要使用 getinstance() 方法。 现在它只是没有意义。
  2. 不要使用 get() 方法。它从来没有任何意义。

如果您想要单例方法,请创建一个已经是 PDO 实例的包装器。你可以在这里找到一个例子。

您将能够运行任意数量的任何类型的查询:

$sql   = 'SELECT * FROM agent WHERE id = ?';
$agent = DB::prepare($sql)->execute([$_GET['id']])->fetch();
$directors = DB::query("SELECT * FROM directors")->fetchAll();

看来你也误会了使用查询结果

echo "<select name='director' id='director'>
    <option value=''>$agent->agent_name</option>";
foreach($directors as $director){
   echo "<option value='$director->name'>$director->name</option>";
}
echo "</select>";