1

次のようなクエリメソッドがあります。

class classOne {
  // Relevant variables
  protected $db, $result;

  public function query ($sql) {
    $this->result = $this->db->query($sql);
    // So, run mysql query provided by the argument
  }
}

次に、次のような挿入メソッド:

class classTwo extends classOne {
  public function insertStuff ($id, $text) {
    $this->query("INSERT INTO Tablename (id, text, time) VALUES ($id, $text, NOW())");
  }
}

次に、クラスをインスタンス化し$c = new classTwo;、メソッドを呼び出します (両方とも別の php ファイルにありますが、クラス ファイルと同じフォルダーにあります) $c->insertStuff(1, "This is a test");

エラーは発生しません。テーブルにはフィールドがなく、空のフィールドもありません。ただし、次のようなハードコードされた値でメソッドを直接使用します。

public function insertStuff ($id, $text) {
    $this->query("INSERT INTO Tablename (id, text, time) VALUES (1, "Some text", NOW())");
 }

それが動作します。次に、ハードコードされた値を1つずつ引数に置き換えて、いつ機能しなくなるかを確認しようとしましたが、フィールドを受け入れて新しい行を正常に挿入しましたが、他のファイルでメソッド呼び出しへのどの参照をNOW()使用するとすぐに、$text停止し、何も追加しません。

必要なファイルはすべて必要であり、そうでない場合はエラーがスローされます。よくわかりません。

4

1 に答える 1

1

クエリの文字列の前後に ' を追加する必要があります

修正コード:

$this->query("INSERT INTO Tablename (id, text, time) VALUES ($id, '$text', NOW())");
于 2013-03-10T14:30:56.653 に答える