-1

異なる ID に対して複数回使用する必要がある非常に長い複数の SQL クエリがあります。これらのクエリをメソッド内の配列に配置して、いつでも呼び出すことができるようにする方がよいと思います。

問題は、ID 変数をクエリ内に配置しようとしたときにスタックしたことです。簡単に例えると、コードは次のようになります。

class SqlQueries {

  protected $_queries;

  private function $_queriesArr() {
    $_queries = array(
                  "SELECT * FROM tbl_a WHERE id = $id_a",
                  "UPDATE tbl_b SET b = NULL WHERE id = $id_b",
                  "UPDATE tbl_c SET c = NULL WHERE id = $id_c",
                );
    return $_queries;
  }

  public function $callQuery() {
    $id_a = 2;
    $tbl_a = $this->$_queriesArr();
    return $tbl_a[0];
  }

  public function $mainMethod() {
    echo $this->callQuery();
  }

}

クエリ内の変数で常にエラーが発生します。

4

2 に答える 2

0
class SqlQueries {

protected $_queries;

private function $_queriesArr($id_a='', $id_b='', $id_c='') {
$_queries = array(
              "SELECT * FROM tbl_a WHERE id = '".$id_a."' ",
              "UPDATE tbl_b SET b = NULL WHERE id = '".$id_b."' ",
              "UPDATE tbl_c SET c = NULL WHERE id = '".$id_c."' ",
            );
return $_queries;
}

public function $callQuery() {
   $id_a = 2;
   $tbl_a = $this->$_queriesArr($id_a);
   return $tbl_a[0];
}

public function $mainMethod() {
   echo $this->callQuery();
}

}
于 2013-10-20T16:34:28.617 に答える
0

このようなパラメータを追加するのはどうですか? しかし、関数の名前を $ で始めるのはなぜですか? ちなみに、関数にパラメーターを追加するだけで、好きなように機能することを願っています

private function queriesArr($id_a, $id_b, $id_c) {
    $_queries = array(
                  "SELECT * FROM tbl_a WHERE id = $id_a",
                  "UPDATE tbl_b SET b = NULL WHERE id = $id_b",
                  "UPDATE tbl_c SET c = NULL WHERE id = $id_c",
                );
    return $_queries;
  }
于 2013-10-20T16:31:36.063 に答える