Zunächst tut mir leid, wenn dies eine dumme Frage scheint. Ich bin neu mit diesem Befehl "unserialize" und ich habe viele Informationen darüber gelesen, aber ich weiß immer noch nicht wirklich, wie ich es implementieren soll, um zu bekommen, was ich brauche.Bedingte PHP-UNSerialize-Funktion
Lassen Sie mich erklären, was ich jetzt habe, und was brauche ich.
Ich habe diesen Code jetzt:
$consultametacat = $wpdb->get_row("
SELECT post_id,
meta_key,
meta_value
FROM cg_postmeta
WHERE post_id = '".$consultapost->ID."'
AND meta_key LIKE '_category_permalink'
",
ARRAY_A
);
Das spart die Ergebnisse dieser Abfrage an die Datenbank in ARRAY_A
Dann bekomme ich diesen Wert auf andere Zeilen wie diese:
$category_color = get_tax_meta($consultametacat['meta_value'],'pm_color_field_id');
$category_name = get_term_by('id', $consultametacat['meta_value'], 'category',ARRAY_A);
$category_name = get_term_by('id', $consultametacat['meta_value'], 'category',ARRAY_A);
$category_link=get_category_link($consultametacat['meta_value']);
Es hat bisher gut funktioniert, denn der meta_value war bis vor zwei Wochen eine ganze Zahl. Nun, alte Einträge in „_category_permalink“ Feld in der Datenbank hat ganze Zahlen, aber neue Einträge haben serialisierten Daten wie folgt aus:
a:1:{s:8:"category";s:2:"23";}
Also, was ich tun müssen, ist einen Zustand versetzen und unserialize nach dieser Bedingung , um immer eine Ganzzahl zu erhalten. Die Logik wird wie folgt sein:
-wenn die Ergebnisse für
$consultametacat = $wpdb->get_row("
SELECT post_id,
meta_key,
meta_value
FROM cg_postmeta
WHERE post_id = '".$consultapost->ID."'
AND meta_key
LIKE '_category_permalink'
",
ARRAY_A
);
eine ganze Zahl ist, dann in der Regel diesen Wert speichern. Wenn es aber zu einer serialisierten Zeile führt, dann wird unserialisiert, der numerische Wert erhalten (in meinem Beispiel die 23 aus der Zeile a: 1: {s: 8: "Kategorie"; s: 2: "23";}) und Speichere diesen numerischen Wert.
Wie erreichen?
Vielen Dank für Ihre Hilfe im Voraus.
Vielen Dank, JOUM! Dies ist der Code, der den Trick gemacht hat: if (strpos ($ consultametacat ['meta_wert'], ': {')! == false) { $ consultametacat = unserialize ($ consultatematacat ['meta_value']); $ consultatematacat ['meta_wert'] = $ consultametacat ['category']; } – Shinji3rd