Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将php函数放在单独的文件中,并从另一个文件调用_Php_Mysql_Function - Fatal编程技术网

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

将php函数放在单独的文件中,并从另一个文件调用,php,mysql,function,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); } ?> 我犯了个错误 致命错误:对中的非对象调

我必须多次连接到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);   
}
?>
我犯了个错误

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

这是一个范围错误,对吗?但我听说让它全球化并不好。你能告诉我怎样把它插好吗

谢谢。

你可以试试看

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;  
   }
  ?>
你可以试试看

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;  
   }
  ?>

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

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();

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

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();

是的,这是作用域的问题-
$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();

是的,这是作用域的问题-
$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();

您的错误在这里:
$conn=newpdo('mysql:host=localhost;dbname='dbname','usr','pass'),应该是
$conn=newpdo('mysql:host=localhost;dbname=“dbname”,'usr','pass')
@k102不太正确,问题是
$conn
connect\u db()
之外隐含了
null
,这是错误所指的非对象。@Jack哦,我明白了。我已经在注意到的第一个错误上停止了:)您的错误在这里:
$conn=newpdo('mysql:host=localhost;dbname='dbname','usr','pass'),应该是
$conn=newpdo('mysql:host=localhost;dbname=“dbname”,'usr','pass')
@k102不太正确,问题是
$conn
connect\u db()
之外隐含了
null
,这是错误所指的非对象。@Jack哦,我明白了。我已在注意到的第一个错误上停止:)