0

有人可以告诉我为什么我的功能不起作用吗?

function myappsbdo($sqlquery, $tabname)
{
try
    {
        $pdo = new       PDO("mysql:host=127.0.0.1;port=3306;dbname=myapps","root","");
    }
catch (PDOException $e)
    {
        echo "Problème de connexion";
        exit();
    }
$sql = $sqlquery;
        $result = $pdo->query($sql);
        $tabname  = $result->fetchALL(PDO::FETCH_NUM);
}

我对我为 $tabname 选择的变量做了一个 var_dump,它是一个空数组。假设里面有我的数据库数据......谢谢!

编辑:这就是我所说的。myappsbdo("SELECT * FROM 类别", $tab1);

4

1 回答 1

1

函数参数$tabname是按值传递的,因此您对该变量的后续分配仅更改函数范围变量的值$tabname,而不更改调用范围变量的值$tab1

您想通过引用传递

function myappsbdo($sqlquery, &$tabname) {
  //                          ^---- notice the ampersand character
  // etc.
  $tabname = $result->fetchALL(PDO::FETCH_NUM);
}

或者,或者,返回结果集:

function myappsbdo($sqlquery) {
  // etc.
  return $result->fetchALL(PDO::FETCH_NUM);
}

$tab1 = myappsbdp('SELECT * FROM categorie');

请注意,您可能应该使您的 PDO 对象静态,以便可以在连续的函数调用中重用数据库连接。

于 2012-12-14T02:12:34.210 回答