【发布时间】:2018-09-30 01:24:58
【问题描述】:
当我从 PHP 5.6 切换到 7.0 或 7.2 时,此语句不再起作用:
$translator = new stdClass();
$sql = "SELECT name, value FROM ".$tab_translator." WHERE lang_id=:lang_id";
try {
$fetchTextTranslated = $conn->prepare($sql);
$fetchTextTranslated->bindValue(':lang_id', (int) trim($translator_lang_id), PDO::PARAM_INT);
$fetchTextTranslated->execute();
}
catch(PDOException $e) {
if ($config->debug==1) { echo 'Error: ' . $e->getMessage(); }}
while ($textTranslated = $fetchTextTranslated->fetch(PDO::FETCH_ASSOC)) {
$translator->$textTranslated['name']=$textTranslated['value'];
}
当我回显$textTranslated['name'] 或$textTranslated['value'] 时,我确实从表中获取了数据。但我希望获取的数据采用 stdClass 对象 $translator 的形式,这在 PHP 7 及更高版本中不再适用。
感谢您的帮助。
【问题讨论】:
-
您的错误日志中有任何内容吗?
-
也许可以试试
$translator->{$textTranslated['name']}和$translator->{$textTranslated['value']}? -
@qooplmao:嘿,它适用于 {$textTranslated['name']} !为什么现在必须把它放在大括号里?
-
旧 PHP:
$translator->{$textTranslated['name']}。新 PHP:{$translator->$textTranslated}['name']。或者类似的东西