Im folgende Beispiel drucken, ich versuche file_already_exists
in einer anderen Zeichenfolge, eine Abfrage zu drucken, aber ich bekomme diese Fehlermeldung:Kann nicht stdClass Eigenschaft
Catchable fatal error: Object of class stdClass could not be converted to string in ...
$db_items = (object) [
"cover" => (object) [
"file_already_exists" => 0, // can't print
],
"file_already_exists" => 0, // can print
];
$str = "INSERT INTO albums (file_on_system) VALUES ('$db_items->cover->file_already_exists')";
echo $str;
Mit $db_items->file_already_exists
funktioniert gut, aber nicht $db_items->cover->file_already_exists
. Warum das? Gibt es eine Möglichkeit, die in cover
zu drucken?
In einer einfacheren Art und Weise
echo "$db_items->file_already_exists"; // works
echo "$db_items->cover->file_already_exists"; // doesn't work
Versuchen Sie '$ db_item [0] -> file_already_exists'? Nicht sicher, ob es mit Objekten funktionieren würde, da es verwendet wird, um das erste Element in einem Array zu erhalten ... Update: Liefert 'var_dump ($ db_item-> cover)' etwas zurück? –
Nein. Es erlaubt mir nicht, $ db_items als Array zu behandeln. 'Var_dump()' 'Retuns Objekt (stdClass) # 3 (1) { [ "file_already_exists"] => int (0) }' – akinuri
Sie bekommen zu komplex in den doppelten Anführungszeichen. PHP erlaubt ein '->', aber nicht mehr als eins, wenn Sie das Ganze nicht in '{}' '{$ db_items-> cover-> file_already_exists} '' einschließen. Überprüfen Sie Beispiele im Handbuch für doppelt zitierte Strings. http://php.net/manual/en/language.types.string.php#language.types.string.syntax.double. Ich würde immer empfehlen, mehr als nur einfache Variablen in '{}' einzuschließen. –