2016-07-18 1 views
-4

、....我々はforeachやwhileを使わずにmysqliでassocをフェッチする方法は? MySQLでは

$userdata = mysql_fetch_assoc(mysql_query("select * tablename where id=".$_SESSION['user_id'].")); 

を使用し、我々はそのページ上の任意の場所$userdataを使用することができます

どのように我々はforeachのか、while文を使用せずにmysqliでそれを行うことができますか?

私は何をしようとしていることとして使用

<? 
include ("db.php"); 
session_start(); 
if(isset($_SESSION['user_id'])) 
{ 
    $userid = $_SESSION['user_id']; 

    $query = "SELECT * FROM mytable where id= '$userid'"; 

    $userdataraw = $database->get_results($query); 

    $userdata = $userdataraw ->fetch_assoc(); 
} 
?> 

クラスである:私はこれを試したとき、私はforeachなし$userdataを設定したいエラー

Fatal error: Call to undefined function fetch_assoc()

を得た

public function get_results($query, $object = false) 
    { 
    self::$counter++; 
    //Overwrite the $row var to null 
    $row = null; 

    $results = $this->link->query($query); 
    if($this->link->error) 
    { 
     $this->log_db_errors($this->link->error, $query); 
     return false; 
    } 
    else 
    { 
     $row = array(); 
     while($r = (!$object) ? $results->fetch_assoc() : $results->fetch_object()) 
     { 
      $row[] = $r; 
     } 
     return $row; 
    } 
} 

またはwhile、それはMysqliで可能ですか?

+1

'$ userdataraw'は__array__です。 'fetch_assoc'メソッドを持たない –

+1

2番目のパラメータをtrueに設定しないと、' get_results'関数はすでに連想配列を返します。 'fetch_assoc()'をもう一度呼び出す必要はありません。 – puelo

+0

@puelo Ok ...私は$ userdata = $ database-> get_results($ query)として設定できます。それを使用できますか?私はmysqliを初めて使っています... –

答えて

1

get_resultsファンクションは、2番目のパラメータが設定されていないかfalseの場合は、すでに連想配列を返します。したがって、fetch_assoc()に再度電話する必要はありません。

また、単一のデータセットしか期待しておらず、ループを使用したくない場合は、$userdata = $userdataraw[0]を最初に取得し、唯一のデータセットを取得する必要があります。

関連する問題