在选项值组合框中发布撇号导致截断

时间:2012-11-08 17:14:38

标签: php post apostrophe

如果包含撇号,我遇到选项值组合框中的已发布值的问题。该值在撇号处被截断。这些值来自一个数据库,在那里他们愉快地坐着撇号。

我明白为什么会这样,但我不知道如何解决这个问题。有任何想法吗?提前谢谢。

echo "<tr><td>Location:</td>";
while($row = mysql_fetch_assoc($result)) {
  $dropdown_location .= "\r\n<option value='{$row['location']}'>{$row['location']}</option>";
}

$dropdown_location .= "\r\n</select>";
echo "<td>" . $dropdown_location . "</td> </tr>";

3 个答案:

答案 0 :(得分:1)

您的代码非常混乱,您不清楚在发布或检索数据时是否有问题,在将数据发布到数据库之前始终使用mysqli_real_escape_string()来转义引号,并清理您的代码数据,此外停止使用mysql_(),使用mysqli_()PDO,因为PHP社区不再维护mysql_() ..

阅读大红框here

而是使用这些mysqli_()

答案 1 :(得分:1)

你可以使用php heredoc混合html,字符串,php变量等:

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

$content .= <<< END
 <tr><td>Location:</td>
END;

while($row = mysql_fetch_assoc($result)) {

$dropdown_location .= <<< END
     <option value="$row[location]">$row[location]</option>
END;
}

$content .= <<< END

 <td><select name="location">$dropdown_location</select></td></tr>

END;

echo $content;

请注意,建议在包含END和END的行之后没有任何可用空间;

答案 2 :(得分:0)

你可以试试htmlspecialchars吗? 这应该让你做你想做的事。

http://php.net/manual/en/function.htmlspecialchars.php