当我将 PDO 对象放入函数中时会发生什么


What happens to my PDO-object when I put it inside a function?

我有一个名为$db的对象,当它在函数内部时,它会输出其他东西:

<?php
$dsn = "pgsql:"
    . "host=ec2-54-217-239-27.eu-west-1.compute.amazonaws.com;"
    . "dbname=dat08vv8oqt1j1;"
    . "user=secret :);"
    . "port=5432;"
    . "sslmode=require;"
    . "password=secret :)";
$db = new PDO($dsn);
$sql = "create table parent_children (
    parent_path varchar,
    child_path varchar,
    primary key(parent_path,child_path),
    foreign key (parent_path) references nodes (path),
    foreign key (child_path) references nodes (path)
)";
/*$sq = $db ->query($sql);*/
print_r($db);
myqueries($sql, $db);
function myqueries($myobject, $sql){
    print_r($myobject);
    die();
};

首次输出时

PDO Object ( )

下次:

create table parent_children ( parent_path varchar, child_path varchar, primary key(parent_path,child_path), foreign key (parent_path) references nodes (path), foreign key (child_path) references nodes (path) )

问题是这在函数中不起作用:

$sq = $myobject ->query($sql);

但它在它之外工作。

看看函数参数。 尝试:

myqueries($db, $sql);

来自raina77ow的评论:

function myqueries(PDO $myobject, $sql) {}

如果$myobject不是 PDO 类型,则会引发错误。