在图像标题属性的网页上显示mysql表中的撇号

时间:2015-05-20 15:14:32

标签: php mysqli fancybox

我有一个表单,允许用户输入收缩(例如拉里的狗)到mysql表>代码如下:

<?php


<?php
if(isset($_POST['submit'])){

$title = mysqli_real_escape_string($conn,$_POST['title']);


$insertImageQ = "INSERT INTO images (title, name, keyword1, keyword2, keyword3, enter_date) VALUES('$title', '$name', '$keyword1','$keyword2','$keyword3',now())"; 


if(!mysqli_query($conn, $insertImageQ)){
die('error inserting new image');
}
$newImage = "one new image added";
}
}
?>

当我回应这个领域&#34; title&#34;在网页上,它工作正常,除非它在图像标题属性中回显。例如,

<?php
$slideShowQ = "SELECT * FROM slideshow";
$result= mysqli_query($connection, $slideShowQ) or die("error getting connected");

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){

echo "<img class='lgImg'";
echo "id='";
echo $row['Id'];
echo "'";
echo "title='";
echo htmlentities($row['title']);
echo "'";
echo "alt='";
echo htmlentities($row['title']};
echo "'";
echo "src='_images/";
echo $row['name'];
echo "'/>";

}
?>
<?php
//release returned data
mysqli_free_result($result);
?>

在javascript文件中,我调用一个函数,在鼠标悬停图像时,div id =&#34; topLeft&#34;将它的html设置为标题。例如,

$('.lgImg').mouseover(function(){

var title =$(this).attr('title');
$('#topLeft').html(title);

当标题字段出现收缩时,撇号中的所有内容都会被截断。

此外,在另一页上,标题字段包含在fancybox应用程序中,其中图像是从mysql表中提取的。标题字段在fancybox应用程序中应该显示,除非标题中出现收缩,在这种情况下,图像甚至不会在fancybox应用程序中弹出。

此外,如果我使用此代码收缩同一图像,

<?php


if(isset($_POST['submit'])){



$title= mysqli_real_escape_string($conn,$_POST['title']);




$updateQ = "UPDATE images SET title='$title'"; 

if(!mysqli_query($conn, $updateQ)){
die('error inserting');
}



}
?>

表格中的字段为空白,而fancybox不起作用。

总而言之,只要我不在图像标题属性中回显收缩,我就可以插入收缩并回显收缩,但我无法通过收缩来更新字段。

有人可以帮我理解这个矛盾吗?

1 个答案:

答案 0 :(得分:0)

htmlentities()默认会保留单引号,当您在html属性中使用它们时,这将导致无效的html。

您可以强制执行单引号编码,如下所示:

htmlentities("'", ENT_QUOTES);

the manual page

的更多信息