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 に答える