在PDO中的非对象错误上调用成员函数query()



这是我的SQL连接代码

$config['db'] = array('host' => 'localhost', 'username' =>  'root', 'password' => '', 'dbname' => 'reputize');
try
{
    $db = new PDO('mysql:host='.$config['db']['host'].';dbname'.$config['db']['dbname'], $config['db']['username'], $config['db']['password']);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    echo "Database connected successfully";
}
catch(PDOException $e)
{
    echo $sql . "<br>" . $e->getMessage();
}

这是我用来从表获取数据的代码

$query = $db->query("select * from metaTags where filename='index'");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) 
{   
    $ptitle=$row['MetaTitle'];
    $desc=$row['MetaDisc'];
    $kwords=$row['MetaKwd'];    
}

但是错误一直显示

在C: xampp htdocs template oop include classIteclasses.php上的c: xampp htdocs template template template template php php上的非对象上的成员函数query((在第14行

>

我在这里和其他站点也尝试过许多解决方案,但没有用。请帮助我解决这个问题

您在这里有错误,dbname'.$config['db']['dbname']应该是dbname='.$config['db']['dbname']

您忘记添加'='dbName。

您的配置应像下面的

dbname='.$config['db']['dbname']

从您的评论中,我知道必须将您的" $ db"变量声明为其他功能。请检查$ db在查询数据库之前具有有效的数据库连接。

我通常使用以下代码来连接和获取我的游戏项目数据。

function getDbConnection()
{
  $pdo = null;
  try
  {
    $pdo = new PDO("mysql:host=" . HOST . ";dbname=" . DBNAME,USERNAME,PWD);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  }
  catch(PDOException $pe)
  {
    die("Sorry! Could not connect to database " . DBNAME. ": " . $pe->getMessage());
  }
  return $pdo;
}
function getData($qry)
{
  $res = null;
  try
  {
    if(!empty($qry))
    {
      $pdo = getDbConnection();
      if(!empty($pdo))
      {
        $res = $pdo->query($qry);
      }
    }
  }
  catch(PDOException $pe)
  {
    throw $pe;
  }
  return $res;
}

注意:以上功能不健壮。但它有效。

最新更新