我必须在MySQL表中插入一些数据。数据将被检索,然后(目前)unserialize
d在此时正确的显示语言将被选择...在mysql中的序列化php中存储多语言数据
我设法将数据(用markdown编码的文本)转换为一组PHP语句,大意如下大致为:
<?php
$component_data = array();
$component_data[65] =
array(// reformatted to avoid side-scrolling
"en"=>"* Student welfare is our top priority.\n* We
have 30 years of experience of running successful
courses for Young Learners.",
"es"=>"* El bienestar de nuestros estudiantes es nuestra
principal prioridad.\n* Contamos con experiencia de
30 años de exitosa realización de cursos para jóvenes.",
"de"=>"* Das Wohl des Lernenden ist unsere oberste Priorität.\n
*Wir organisieren seit 30 Jahren erfolgreich
Sprachkurse für Jugendliche",
"it"=>"* Il benessere degli studenti è la nostra priorità
assoluta.\n* Abbiamo 30 anni di esperienza nei corsi
per ragazzi.",
"fr"=>"* Le bien-être de l’élève a pour nous la priorité absolue.
\n* Nous avons 30 ans d'expérience dans la gestion de cours
réussis pour jeunes étudiants");
?>
,我希望能使用以下方法来让它进入准备进口的格式到MySQL表:
<?php
foreach ($component_data as $id => $value) {
echo "UPDATE `components` SET `component_content`='".
mysql_real_escape_string(serialize($value)).
"' WHERE `id` = '$id';\n";
}
?>
遗憾的是它不进去,但这个页面上的结果被破坏了,也就是说显示了序列化的字符串,而不是数组(如果它无法管理对从MySQL获取的字符串进行反序列化,则这是默认行为)。
我已经尝试了PHP字符串清理功能的一些排列组合,而且我的头部正在坦然地旋转着。
理想情况下,我希望能够重新格式化PHP风格的数据插入到MySQL数据库,以便取出时,它仍然在unserializ
能状态...
...和奖金点,如果您可以将utf8外语字符转换为HTML实体并从减价转换为HTML
首先,为什么在这里序列化?我想说的是,将序列化数据放入数据库有90%的可能性,但实际上并没有这样做 - 您将数组分开并将其正确放入SQL中(如果我们忽略了不需要的序列化)。这就是说,为什么你会期望有一个反序列化的数组,当你序列化只是字符串(不需要序列化的第一个地方)? – Amadan 2010-07-04 23:43:48
因为还有遗留的数据没有被翻译,出于政治原因,我需要将多个翻译放到一个mysql文本字段中。我没有说它很优雅。 :-( – Dycey 2010-07-05 00:07:45
我很抱歉,看到我误读你的代码!@Amadan它是一个多维数组,他将数组串行化到'component_data [65]'中,该数组不是每种语言的值。 – 2010-07-05 00:32:33