我试图从某个SQL表中获取一些列,它的工作方式如下:
<?php
include("config.php");
// SELECT DATABASE TO ECHO FROM
$sql = "SELECT * from GuildInformation";
// ECHO FROM THE ^SELECT
$data = $conn->query($sql);
foreach ($data as $row) {
// HERE IS SOME CODE WHICH DOES WORK
}
?>
^这个方法确实很有效,现在我想围绕它创建一个函数:
<?php
include("config.php");
function SelectGuildInfo() {
// SELECT DATABASE TO ECHO FROM
$sql = "SELECT * from GuildInformation";
// ECHO FROM THE ^SELECT
$data = $conn->query($sql);
foreach ($data as $row) {
// HERE IS SOME CODE WHICH DOES WORK
}}
?>
当我调用函数SelectGuildInfo();
时,我得到以下错误代码:
Fatal error: Call to a member function query() on a non-object in /users/l4g/www/84732842323772/submit.php on line 12
第12行是:$data = $conn->query($sql);
因此,当我include("config.php");
进入我的函数时它再次起作用,但是我希望数据库连接不在我的函数中,因为我对这个脚本有1个以上而且只包含1个。
除此之外,我对这些内容非常新,并且实际上想尝试使用类来进行数据库连接,所以我想出了这个:
<?php
class dbConn{
protected static $db;
private function __construct(){
try{
self::$db = new PDO('mysql:host=localhost;dbname=NAME', 'USR', 'PWD');
self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
echo "Connection Error: " .$e->getMessage();
}
}
public static function getConnection(){
if(!self::$db){
new dbConn();
}
return self::$db;
}
}
?>
如何在我的脚本中使用我的类,所以我不必为我想要使用的每个功能都包含一些东西?!
非常感谢你帮助我!
现在有了这个代码,它运行得非常完美!:)
include("database.class.php");
$db = dbConn::getConnection();
function SelectGuildInfo($db)
答案 0 :(得分:1)
您的代码无效,因为$conn
中的SelectGuildInfo()
和配置中的$conn
是两个不同的变量。
为了使其正常工作,您必须将$conn = Database::getInstance()
添加到SelectGuildInfo中(假设您的工作示例中的$conn
是数据库实例)。
P.S。请不要使用mysql_*
函数,而是使用mysqli或PDO。