2016-10-13 3 views
0

ich eine Funktion haben, die sollen mir ein Array zurück, wie diesesarray_merge() Ausgabe mit PDO

Array 
(
[company1] => position1 
[company2] => user2 
) 

ich eine richtige SQL-Abfrage haben, die mir die erforderlichen Daten nur gut holt (in MySQL Workbench getestet und durch Dumping die Daten

die Funktion, die die Sache tut (Kommentar in CAPS an der Linie mit Ausgabe).

function check_user_status ($db){ 
    try { 
     $log = new PDO("mysql:host=".$db['server'].";dbname=".$db['db'], $db['mysql_login'], $db['mysql_pass'], array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); 
     // set the PDO error mode to exception 
     $log->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     // prepare sql and bind parameters 
     $stmt=$log->prepare ("select a.companyname,b.role from companies a, roles b where a.companyid=b.companyid and (b.uid = :uid and b.suspended = 0);"); 

     $stmt->bindParam(":uid", $_SESSION['uid'], PDO::PARAM_INT); 
     $stmt->execute(); 
     $count=$stmt->rowCount(); 
     //echo "<br>count = $count<br>"; //outputs the numbner of resulting rows for debuging 
     if($count >=1) { 
      unset ($_SESSION['status']); //purge any previous user_status 
      $_SESSION['status'] = array(); 
      while ($userRow = $stmt->fetch(PDO::FETCH_ASSOC)) { 
      //echo "<br>{$userRow['companyname']} => {$userRow['role']}<br>"; outputs the data for debuging 
      array_merge ($_SESSION['status'], array($userRow['companyname'] => $userRow['role']));// THIS DOESN'T WORK FOR SOME REASON 
      } 
      return true; 
     } 
     else 
     { 
      //return false; 
     } 

    } 
    catch(PDOException $e) { 
     return false; 
     echo 'error: '. $e->getMessage(); 
    } 

} 

Nun ist diese:

check_user_status($db); 
var_dump ($_SESSION['status']); 

Ausgänge mich leer Array:

array(0) { } 

array_merge_recursive() funktioniert auch nicht. Benachrichtigungen sind aktiviert, keine Benachrichtigung wird ausgelöst. Jede Hilfe würde sehr geschätzt werden.

Antwort

2

RTM: http://php.net/array_merge

Rückgabewerte: Gibt das resultierende Array.

Sie haben:

array_merge ($_SESSION['status'], array($userRow['companyname'] => $userRow['role'])); 
// THIS DOESN'T WORK FOR SOME REASON 

"aus irgendeinem Grund" = Sie den Rückgabewert vollständig IGNORING, die Ihre fusionierten Array ist.

+0

'$ _SESSION ['status'] = array_merge ($ _SESSION ['status'], Array ($ userRow ['Firmenname'] => $ userRow ['Rolle']));' @Marc OMFG, thats was du für mehr als 10 Stunden hintereinander bekommst! – RWS