Php 如何将一个连接用于2个或多个功能?

Php 如何将一个连接用于2个或多个功能?,php,mysql,function,pdo,connection,Php,Mysql,Function,Pdo,Connection,我使用PHP的PDO连接到MySQL。我有以下连接代码: $dbh = new PDO ( $db_host.$db_database, $db_user, $db_pass ); $dbh->exec ( "set names utf8" ); 我在另一个文件中有一个函数: function Image() { include 'config/connect.php'; #connected $sql = 'Select * from set

我使用PHP的PDO连接到MySQL。我有以下连接代码:

$dbh = new PDO ( $db_host.$db_database, $db_user, $db_pass );
$dbh->exec ( "set names utf8" );
我在另一个文件中有一个函数:

function Image()
{
    include 'config/connect.php';
    #connected         

    $sql = 'Select * from settings where name="X" ';
    $stmt = $dbh->prepare($sql);
    $stmt->execute();
    $row = $stmt->fetchObject();
    $Template = $row->web_site_template;
    echo "Template"; 
}
我可以使用
include connect.php
文件来实现这一点,但事实并非如此

我想在所有其他函数上使用一个函数,如connection()连接到mysql,如:

function Image()
{
    connection();

    $sql = 'Select * from settings where name="X" ';
    $stmt = $dbh->prepare($sql);
    $stmt->execute();
    $row = $stmt->fetchObject();
    $Template = $row->web_site_template;
    echo "Template"; 
}

这就是函数。把它放在你喜欢的任何文件里

function connection() { 
$db_host = "..."; $db_database = "..."; $db_user = "..."; $db_pass = "...";
$GLOBALS["dbh"] = new PDO ( $db_host.$db_database, $db_user, $db_pass );
$GLOBALS["dbh"]->exec ( "set names utf8" );
}
这是你的主要代码。如果您决定将该文件放在另一个文件中,请使用上面的代码包含该文件

connection();

$sql = 'Select * from settings where name="X" ';
$stmt = $dbh->prepare($sql);
$stmt->execute();
$row = $stmt->fetchObject();
$Template = $row->web_site_template;
echo "Template"; 

<>我会认为它是糟糕的编码风格。

我找到了一个最佳的解决方案来解决我的问题(如何使用MySQL连接来实现1个或多个函数):


不,这不是工作!我想应该是use public function(),你知道它吗?如何使用它?我不能在这里测试它,但我很确定它确实有效。将上面的两行放入类似于
connection()
的函数中。然后像在第二个代码块中那样调用函数。我扩展了我的答案以更详细地解释它。不要使用exec(“SET NAMES utf8”);如果您的PHP版本太旧,请添加或使用此处描述的
MYSQL\u ATTR\u INIT\u命令
变通方法。这将解决在不同PHP版本中正确连接的所有问题。
$db_database ="YourTableName";
$db_user     ="YourUsername";
$db_pass     ="YourPassword";
$db_host     ="YourHostName";

$dbh = new PDO ( "mysql:host=$db_host;dbname=$db_database", $db_user, $db_pass );
$dbh->exec ( "set names utf8" );

$database = $dbh; // Here you can use $dbh too, but I use $database to understand the difference here .

#start function
function Template(){
    global $database; //use $database as global

    $sql = 'Select * from YourTableName where column="Record"';
    $stmt = $database->prepare($sql); //use $database Instead $dbh 
    $stmt->execute();
    $row = $stmt->fetchObject();
    $Template = $row->web_site_template;
    echo $Template; 
   }

Template(); // Here is your result.