2011-12-14 12 views
1

これは私がオブジェクトとして変数を使用する方法は?

public function content($search) { 
     $this->dbconnection(); 
     $search = mysql_real_escape_string($search); 

     $q= mysql_query("SELECT title FROM xx WHERE title LIKE '%$search%'"); 
     $s = mysql_fetch_array($q); 
     foreach ($s as $key => $val) { 
      $$key = $val; 
     } 

    } 

$cl= new Class; 
$test = $cl->content('cloud'); 

のindex.phpファイルにを使用し、クラス内の関数であるとの質問は、私は、foreachループ内で設定された変数をエコーすることができますどのように

です?

$test->title; <これは確かに機能しませんが、これは私がやろうとしていることを説明しています。

答えて

1

戻りオブジェクトとして配列:あなたのコードで次に

public function content($search) 
{ 
    $this->dbconnection(); 
    $search = mysql_real_escape_string($search); 

    $q = mysql_query("SELECT title FROM xx WHERE title LIKE '%$search%'"); 
    $s = mysql_fetch_assoc($q); 

    return (object)$s; 
} 

:また

$cl= new Class; 
$content = $cl->content('cloud'); 
echo $content->title; 

は、あなたが公共の設定しmysql_fetch_object

+0

私はこの事 –

+0

もmysql_fetch_object提案するつもりだった合格でしたか知らないあなたに感謝:http://us2.php.net/mysql_fetch_object –

1

を使用して、オブジェクトとして行をフェッチすることができプロパティを定義し、title変数を割り当てます。あなたのクラスの先頭にこれを追加します。

public $title = ''; 

その後のようなあなたのforeachの中で変数を割り当てる:

$this->title = $whatever; 
+0

'ます$ this->タイトル= $何を;' – adlawson

+0

大丈夫しかし、どのような場合私は 'SELECT * FROM xx WHERE title LIKE '%$ search%''のようにSQLクエリを変更しますか? foreachによって10以上の変数が設定されます –

+0

@adlawson:良いキャッチ! ronnie次に、変数を配列として宣言し、その中に各結果を格納します –

1

私は本当にあなたがこのコードスニペットでやろうとしているのか理解していません。 関数のcontent()は値を返しません。 $ test変数には何も保存されていません。 content()関数は、Query as Nameから受け取ったKeyキーを持つ変数の束を作成します。だから、あなたが "$ title"変数/キーの値を取得したいのであれば、それをエコーする必要があります。

試してみてください。

echo $title; 

あなたがコンテンツ()関数を呼び出した後。クエリーで何かが返され、「タイトル」がキーとして返された場合、これは検索していたタイトルのValueをエコーし​​ます。 あなたが何かしたい場合は、次の

$res = $classObject->content('cloud'); 
echo $res->title; 

をあなたはtitle属性を持っている、そのようなオブジェクトを作成し、あなたの関数のそれを返却する必要があります。

関連する問題