未捕获错误:调用成员函数prepare()(PDO,php)
我试图使用PHP中的公共函数从表中获取数据,但出现以下错误: 未捕获错误:调用成员函数prepare()(PDO,php) 我在找两三个小时。。。但没有类似的结果,或者我不理解未捕获错误:调用成员函数prepare()(PDO,php),php,html,Php,Html,我试图使用PHP中的公共函数从表中获取数据,但出现以下错误: 未捕获错误:调用成员函数prepare()(PDO,php) 我在找两三个小时。。。但没有类似的结果,或者我不理解 <?php class Config { public static $SQL; private function __construct() { $host_name = "localhost"; $base_user = "ro
<?php
class Config {
public static $SQL;
private function __construct() {
$host_name = "localhost";
$base_user = "root";
$base_pass = "";
$base_name = "home_page";
try {
self::$SQL = new PDO("mysql:host=$host_name;dbname=$base_name", $base_user, $base_pass);
self::$SQL->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
die("Something went wrong, database connection closed. Reason: ". $e->getMessage());
}
}
public static function GetData($table, $data, $id) {
$wc = Config::$SQL->prepare('SELECT `'.$data.'` FROM `'.$table.'` WHERE `ID` = ?');
$wc->execute(array($id));
$r_data = $wc->fetch();
return $r_data[$data];
}
}
?>
您想在任何地方都使用
STATIC
有什么特别的原因吗?常用的方法是使用公共的、动态的方法和属性。我用PHPs OOP中建议的命名约定重写了您的示例,它可以工作:
实际上还应该提到,通过设计,您的类应该被调用连接
并且find*方法应该放在存储库类中,但这取决于您。现在我得到了以下错误:未捕获错误:在不在对象上下文中时在第行使用$this:$stmt=$this->conn->prepare('SELECT'.$data.'
FROM'.$table.'
WHEREuid
=?');您仍然静态调用您的类/方法,告诉我们如何执行?如果您按照我的示例进行测试,您会看到它可以工作。是的,您的示例可以工作。我使用这样的函数->
。但是,您可以返回这个->数组([Moto]=>my Moto!)
我只需要“My moto!”。建议您这样做。为什么您仍然希望使用静态方法和属性?顺便说一句,按定义构造函数不应该是私有的。您在何时何地创建配置
对象?
<h1><?php echo Config::GetData("page_details", "Moto", 1) ?></h1>
$wc = self::$SQL->prepare('SELECT `'.$data.'` FROM `'.$table.'` WHERE `ID` = ?');