2011-12-14 85 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; 
     } 

    } 

类和index.php文件

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

和问题的功能被

我怎样才能回声其中我设置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

谢谢你,我不知道我怎么会通过这件事 – 2011-12-14 23:36:21

+0

也打算建议mysql_fetch_object:http://us2.php.net/mysql_fetch_object – 2011-12-14 23:43:59

1

设置一个公共读取该行作为对象属性,并将标题变量赋值给它。添加到您的类的顶部:

public $title = ''; 

然后在你的foreach变量指定为这样:

$this->title = $whatever; 
1

我真不明白你正在尝试在此代码段做。 你的函数内容()不返回一个值。所以没有任何东西保存在你的$ test变量中。 Your content()函数使用从查询作为名称收到的键值创建一堆变量。所以如果你想获得你的“$ title”变量/键的价值,你只需要回应一下。

尝试:

echo $title; 

你已经调用内容()函数之后。如果您的查询返回了某些内容并将“title”作为Key,则应该回显您正在搜索的标题的值。 如果你想是这样的:

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

你必须创建这样一个对象,它有一个标题属性,并返回,在你的函数。