У меня есть форма, которая позволяет пользователю вводить сокращение (например, собаки Ларри) в таблицу 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";
}
}
?>
Когда я повторяю поле «заголовок» на веб-странице, оно работает нормально, если оно не отображается в атрибуте заголовка изображения. Например,
<?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 = «topLeft», имеет 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 не работает.
В общем, я могу вставить сжатие и повторить это сокращение, пока я не отражаю его в атрибуте заголовка изображения, но я не могу обновить поле с сокращением.
Может кто-нибудь помочь мне понять это противоречие?
htmlentities () будет оставлять одинарные кавычки по умолчанию, и, поскольку вы используете их в своих атрибутах html, это приведет к недопустимому html.
Вы можете включить кодирование одинарных кавычек следующим образом:
htmlentities("'", ENT_QUOTES);
Больше информации на страница руководства
Других решений пока нет …