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

时间:2014-04-08 08:37:01

标签: php mysql oop pdo

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

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

这很好。

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

我的update.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 个答案:

答案 0 :(得分:-4)

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

  1. 不要使用getinstance()方法。它现在没有任何意义。
  2. 不要使用get()方法。它根本没有任何意义。
  3. 如果您需要单例方法,则创建一个已经是PDO实例的包装器。你可以find an example here.

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

    $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>";