我正在尝试从数据库查询输出项目描述。
这段代码应输出名称等的描述......
<?PHP
$type = "item";
$limit = 16;
$preparedStatement = $SQL->prepare('SELECT * FROM z_shop_offer WHERE offer_type = :type LIMIT :limit');
$preparedStatement->bindParam(':type', $type, PDO::PARAM_STR);
$preparedStatement->bindParam(':limit', $limit, PDO::PARAM_INT);
$preparedStatement->execute();
if ($preparedStatement->rowCount() > 0) {
// Define how we want to fetch the results
$preparedStatement->setFetchMode(PDO::FETCH_ASSOC);
$iterator = new IteratorIterator($preparedStatement);
foreach ($iterator as $item) {
echo '
<div class="ServiceID_Icon_Container" id="ServiceID_Icon_Container_'.$item['id'].'">
<div class="ServiceID_Icon_Container_Background" id="" style="background-image:url('.$layout_name.'/images/serviceid_icon_normal.png);">
<div class="ServiceID_Icon" id="ServiceID_Icon_'.$item['id'].'" style="background-image:url(' . $config['site']['item_images_url'] . $item['itemid1'] . $config['site']['item_images_extension'] . ');" onclick="ChangeService('.$item['id'].', 12);" onmouseover="MouseOverServiceID('.$item['id'].', 12);" onmouseout="MouseOutServiceID('.$item['id'].', 12);">
<div class="PermanentDeactivated">
<span class="HelperDivIndicator" onmouseover="ActivateHelperDiv($(this), \''.$item['offer_name'].'\', \''.htmlentities($item['offer_description']).'<BR><BR>\', \'\');" onmouseout="$(\'#HelperDivContainer\').hide();">
<div class="ServiceID_HelperDiv"></div>
</span>
</div>
</div>
</div>
</div>
';
}
}
?>
我已经尝试过htmlentities
,htmlspecialchars
和addslashes
。
这是存储在数据库中的描述(在此数据库中,它停止显示带有描述的工具提示。
激活一小时1.5倍的经验。它只收取一次费用。 在一个处于活动状态时使用任何其他注入只会堆叠它 时间而不是经验。如果您退出或,时间不会停止 死。
如何正确转义/输出说明?
答案 0 :(得分:2)
您可能遇到的问题是需要双重转义数据。你需要:
尝试在您的描述字段中运行此PHP函数:
function fix_js($string){
return strtr(
$string,
array(
'\\' => '\\\\',
"'" => "\\'",
'"' => '\\"',
"\r" => '\\r',
"\n" => '\\n',
'</' => '<\/')
);
}
让我们知道它是否能解决您的问题