将php函数放在单独的文件中并从另一个文件调用

时间:2013-05-17 06:01:07

标签: php mysql function

我必须多次连接到db,所以我想将db连接代码放在名为functions.php的另一个文件中

<?php
function connect_db(){
$conn = new PDO('mysql:host=localhost;dbname='dbname', 'usr', 'pass');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   
}
?>

当我想连接我在另一个文件中插入connect_db()时,

try {
connect_db();

    $stmt = $conn->prepare('SELECT * FROM 'table' WHERE url= :url');

我收到了一个错误..

  

致命错误:在非对象中调用成员函数prepare()   /...

这是一个范围错误吧?但我听说全球化并不好。你能告诉我如何正确插入它吗?

感谢。

3 个答案:

答案 0 :(得分:2)

你必须在函数中返回对象,否则它只是函数内部的局部变量,一旦函数结束就会被清除。

function connect_db()
{
    $conn = new PDO('mysql:host=localhost;dbname=dbname', 'usr', 'pass');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   

    return $conn;
}

$conn = connect_db();

答案 1 :(得分:0)

是的,这是范围的问题 - $conn仅在该功能中可用。你需要退货:

function connect_db(){
    $conn = new PDO('mysql:host=localhost;dbname=dbname', 'usr', 'pass');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   
    return $conn;
}

然后当你调用函数时:

$conn = connect_db();

答案 2 :(得分:-1)

你可以尝试一下..

first.php

<?php
   function connect_db(){ 
   $conn = new PDO('mysql:host=localhost;dbname='dbname', 'usr', 'pass');
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
   return $con;  
   }
  ?>

second.php

    <?php
      include('first.php');
      connect_db();
     ?>