PDO - 调用成员函数(在很多连接上)

时间:2016-01-04 17:15:38

标签: php sql pdo

我在网站上遇到此错误:

  

致命错误:在第27行的/home/public_html/page.php中调用非对象的成员函数prepare()

这是我的功能:

function getSetting()
        {
            global $dbh;
            $stmt = $dbh->prepare("SELECT setting_name, setting_value FROM settings");
            try
            {
                $stmt->execute();
            }
            catch(PDOException $e)
            {
                die($e->getMessage());
            }

            $sdata = array();
            while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $sdata[$row['setting_name']] = $row['setting_value'];
            }

            return $sdata;
        }

上述错误仅在我的网站收到大量请求时才会发生。我使用这样的函数:

//Get settings from database.
$site = new Site; //Load the Site class, where the function getSetting() is located
$sdata=$site->getSetting();

我怀疑问题出在我的查询中,但我无法弄清楚如何进一步优化它。

非常感谢任何帮助

更新

这就是我连接数据库的方式:

try {
    $dsn = "mysql:host=" . $database['host'] . ";dbname=" . $database['db'];
    $dbh = new PDO($dsn, $database['user'], $database['pass'], array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT));     
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); // <== add this line
    //echo 'Connected to Database<br/>';    
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }

我的max_connections目前设为250

0 个答案:

没有答案