我在哪里放PDO?

时间:2014-05-27 16:14:26

标签: php mysql pdo

我的目标是有两种方法来过滤显示的数据。第一个是显示多少天。另一个允许用户选择要显示的组。他们应该彼此独立工作。但也是串联,为组NSV选择20天后,仅显示具有两个标准的记录。但是为所有团体选择20天后也是如此。

第一个下拉菜单是一个简单的HTML选择/选项设置,在屏幕上显示为“显示10天后”。 另一个在页面上被视为“所有组”,并且是从MySQL表创建的。要做到这一点,我有这个功能;

  function GroupSelect() {
  $g_query = "SELECT DISTINCT b.g_code, concat(b.g_code, '    ', b.g_name) as theGroups FROM skeds AS a, Groups AS b
   WHERE a.g_code = b.g_code
   ORDER BY b.g_name";  //echo $g_query;  
   foreach($db_found->query($g_query) as $g_row) {
  $bg_code   = $g_row['g_code'];  
  $theGroups = $g_row['theGroups'];  
  $theGroupsSelect .= "<option value=\"$bg_code\">".$theGroups."</option>";
  }
   echo $theGroupsSelect;
  } // End GroupSelect

此功能或至少查询工作正常,并从表中选择正确的记录。和语句是HTML格式。

我想要在选择“过滤器”按钮时运行其中一个/或两个。两个下拉列表都在相同的DIV标记(selectDIV)中,并且都使用相同的名称为“过滤器”。更改两个下拉菜单中的任何一个,然后单击“过滤器”将导致显示更改。

对GroupSelect函数的调用在第434行附近出现,看起来像这样;

问题在于我将PDO数据库分配放在哪里,在'GroupSelect'函数中或在'buildlist'页面的主函数中我得到致命错误。唯一的区别在于它指向导致它们的代码。

致命错误:在第12行的/ / arhab / hab_launch_list_new.php中的非对象上调用成员函数query()

所以我的第一个问题是放置PDO数据库的位置,以便它适用于这两个函数。我已经在两个函数中单独尝试过,也在两个函数之上。无论我把它放在哪里,我都会得到上面的致命错误,只有行号发生变化。

我认为我的问题与不了解如何使用PDO提取两组信息有关。它们都在相同的MySQL数据库中,并且都使用“skeds”表。但是,较大的函数也使用另外两个表。我还尝试将GroupSelect函数单独放在自己的文件中,并使用require_once调用它。但是这个概念也存在问题。

我仍在尝试学习用PHP做事的最佳方式,但我真的没有任何本地人可以问。如果你有时间,请看一看并告诉我这段代码出了什么问题。

是的,我知道GroupSelect()函数目前已被注释掉。这是给您整体感觉页面的唯一方法。 经验告诉我你们有些人会批评我写这个问题的方式,其他因为我忘了一些细节,请善待,我会尽力回答所有问题。

提前谢谢你!

1 个答案:

答案 0 :(得分:3)

在您的情况下,

$db_found未定义,您可以在该函数内创建新连接:

  function GroupSelect() {
  $db_found = new PDO('mysql:host=localhost;dbname=test', 'userName','Password'
                      array(PDO::ATTR_EMULATE_PREPARES => false, 
                      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

       //.......
   }

或将其作为参数传递:

function GroupSelect($db_found) {....}

您也可以将其设为属性并访问它$this->db_found