/ / PHP $ _SESSION dreht sich von Array zu Object [geschlossen] - PHP, Arrays, Objekt, Session-Variablen

PHP $ _SESSION dreht sich von Array zu Objekt [geschlossen] - PHP, Arrays, Objekt, Session-Variablen

Mein Problem ist einfach zu sagen: mein $ _SESSION ist, nachdem er einen wirklich kleinen Code ausgeführt hat, von einem Array zu einem Objekt (und ändert auch die Werte!)

Schau es dir an, dreh dich ab von:

[_SESSION] => Array
(
[user] => Array
(
[id] => 2
)
)

zu:

[_SESSION] => Array
(
[user] => stdClass Object
(
[id] => 1
)

)

Und das Skript, das dazwischen ausgeführt wird, ist eine einfache PDO-Abfrage, die verwendet $_SESSION["user"]["id"] als Parameter zum Binden.

Mächtiges Gold, hilf mir!

BEARBEITEN: Hier ist die PDO-Abfrage, die ich ausführen:

function get_relatives_by_id($list_ids){ // $list_ids has been sanitized
global $co;
$tr = $co->prepare("SELECT id FROM people WHERE id IN (". $list_ids .") AND id IN (
SELECT id_people1 FROM people_relationships WHERE id_people2=:id_connected_user
) ORDER BY id ASC");
$tr->bindParam(":id_connected_user", $_SESSION["user"]["id"], PDO::PARAM_INT);
$tr->execute();
return $tr->fetchAll(PDO::FETCH_OBJ);
}

BEARBEITEN 2: Nach Ihren Ideen habe ich versucht, eine zweite Spalte abzurufen, um zu sehen, ob $_SESSION würde auch geändert werden, und nun, es ist ..

So machen Sie die Abfrage so aussehen: SELECT id, email FROM.. Macht das $_SESSION aussehen wie :

[_SESSION] => Array
(
[user] => stdClass Object
(
[id] => 1,
[email] => lol@lol.lol
)

)

Seltsam, nicht wahr?

EDIT 3: Ich habe gerade versucht, mein Projekt mit Wamp und .. laufen zu lassen. Kein Problem, wie erwartet, da der Code stimmt. Also ich denke, ich muss in OVHs Server-Konfiguration graben, und Sie können mir hier nicht helfen. Wie auch immer, ich danke allen, die an dieser Frage teilgenommen haben! Wirklich!

Antworten:

1 für die Antwort № 1

Sie können es zwingen, mit array zu sein

$_SESSION["user"] = (array) "yourdata";

1 für die Antwort № 2

Du könntest es versuchen PDOStatement::bindValue Es sieht so aus, als ob PDO den Verweis, den Sie an BindParam übergeben, ändert, obwohl es nur lesen sollte.

Von PDOStatement::bindParam:

bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )

Bindet eine PHP-Variable an ein entsprechendes benanntes oderFragezeichen-Platzhalter in der SQL-Anweisung, die zur Vorbereitung der Anweisung verwendet wurde. Im Gegensatz zu PDOStatement :: bindValue () ist die Variable als Referenz gebunden und wird nur zu dem Zeitpunkt ausgewertet, zu dem PDOStatement :: execute () aufgerufen wird.

Die meisten Parameter sind Eingabeparameter, dhParameter, die schreibgeschützt verwendet werden, um die Abfrage aufzubauen. Einige Treiber unterstützen den Aufruf von gespeicherten Prozeduren, die Daten als Ausgabeparameter zurückgeben, und einige auch als Eingabe- / Ausgabeparameter, die sowohl Daten senden als auch aktualisiert werden, um sie zu empfangen.