2013-11-26 5 views
0

Во-первых, спасибо, что прочитали это. Как решить мои проблемыmysqli_result не может быть преобразован в строку

КОД

$roomid = CMS::$MySql->Query("SELECT room_id FROM user_roomvisits WHERE user_id ='".$users['id']."' ORDER BY entry_timestamp DESC LIMIT 1"); 
$room = CMS::$MySql->Query("SELECT caption FROM rooms WHERE id ='".$roomid."'"); 

И получил ошибку:

Catchable фатальная ошибка: Объект класса mysqli_result не может быть преобразован в строку.

Здесь MySQL класс

<?php 
    class MySql{ 
private $Link; 
private $Statement; 
public $Result = null; 
private $FetchRows = Array(); 

public function __construct($Data) 
{ 
    $this->Link = new MySQLi($Data['mysql.hostname'], $Data['mysql.username'], $Data['mysql.password'], $Data['mysql.database']); 
} 

public function Query($Query) 
{ 
    if (isset($this->Statement)) 
    { 
     $this->Statement->Close(); 
     $this->Statement = null; 
    } 

    return $this->Link->query($Query); 
} 



public function Prepare($Query) 
{ 
    if (isset($this->Statement)) 
    { 
     $this->Statement->Close(); 
    } 

    $this->Statement = $this->Link->prepare($Query); 


} 

public function Execute($FuncArgs = null) 
{ 
    if (!is_array($FuncArgs)) 
    { 
     $FuncArgs = func_get_args(); 
    } 

    $Args = Array(''); 

    foreach ($FuncArgs as &$Arg) 
    { 
     $Args[0] .= substr(gettype($Arg), 0, 1); 
     $Args[] =& $Arg; 
    } 

    call_user_func_array(Array($this->Statement, 'bind_param'), $Args); 
    if (!$this->Statement->Execute()) 
    { 
     exit('Execute Stmt Error: '.$this->Statement->error); 
    } 

    return $this->Statement; 
} 

public function Fetch($Columns) 
{ 
    if (!is_array($Columns)) 
    { 
     $Columns = func_get_args(); 
    } 

    if ($this->Result == null) 
    { 
     $this->Result = array_combine($Columns, $Columns); 
     $Args = Array(); 

     foreach ($Columns as $Column) 
     { 
      $Args[] =& $this->Result[$Column]; 
     } 

     call_user_func_array(Array($this->Statement, 'bind_result'), $Args); 
    } 

    $RowsLeft = $this->Statement->fetch(); 

    if (!$RowsLeft) 
    { 
     self::Clear(); 
     return false; 
    } 

    return $this->Result; 
} 

?>

это класс MySQL для PDO может быть?

+0

почему вы используете PDO, если вы не хотите использовать подготовленные заявления? –

+0

Покажите нам больше кода. вероятно, '$ roomid' или' $ room', объявленный как строка. – MeNa

+0

@ Mr.Alien, где PDO? – egig

ответ

0
$roomid = CMS::$MySql->Query("SELECT room_id FROM user_roomvisits WHERE user_id ='".$users['id']."' ORDER BY entry_timestamp DESC LIMIT 1"); 
while($row=mysql_fetch_array($roomid)){ 
    $rumid=$row[0]; 
} 
$room = CMS::$MySql->Query("SELECT caption FROM rooms WHERE id ='".$rumid."'"); 

результат запроса mysql - объект. и не может повторить объекты

использование var_dump() или print_r() для просмотра структуры их

+0

Я получил эти ошибки> Примечание: Неопределенное смещение: 0 в C: \ xampp \ htdocs \ Boost \ Packages \ Default \ Templates \ Home.tpl в строке 119 Примечание: попытка получить свойство не-объекта в C: \ xampp \ htdocs \ Boost \ Packages \ Default \ Templates \ Home.tpl в строке 119 –

+0

попробуйте распечатать print_r ($ row) .check what is coming – Bhadra

+0

otice: Неопределенное смещение: 0 в C: \ xampp \ htdocs \ Boost \ пакеты \ Default \ Templates \ Home.tpl на линии 121 Примечание: Попытка получить свойство не-объекта в C: \ XAMPP \ HTDOCS \ Повысьте \ Packages \ Default \ Templates \ Home.tpl на линии 121 \t Массив ([room_id] => 37) –

Смежные вопросы