在PHP中从MySQL结果中转义引号(PDO)
要显示的字符串来自MySQL表。 我使用PDO查询。 该字符串包含双引号:
较早的拼写(来自法语)。 现代化的“小偷袭”现在是首选。
这是一个字典条目的定义,如果可用则显示:
$search_results .= (!empty($english_definition)? "<a class="definition" href="#" data-toggle="popover" rel="popover"
data-content="".$english_definition."">".$english."*</a>" : $english);
由于引用了这个定义,所以在“现代化”这个词后面加上了定义。
我尝试使用addslashes()
但结果是显示单斜杠,并没有任何后面。
我也尝试在表格字段中添加斜线,例如
较早的拼写(来自法语)。 现代化的“小偷小摸”现在是首选。
如果在PHP代码中没有stripslashes()
,则只显示第一个反斜杠,后面没有任何反斜杠。
当我添加stripslashes()
,在“modernized”一词后面没有任何内容显示。
所以,这是我卡住的地方。
其他代码:这是我如何插入新的术语和定义。 我已经添加了htmlspecialchars()
来输入引号可以存在的地方:
if(isset($_POST['submit'])) {
$english = htmlspecialchars($_POST['english']);
$english_abbr = $_POST['english_abbr'];
$variant = $_POST['variant'];
$bulgarian = htmlspecialchars($_POST['bulgarian']);
$bulgarian_abbr = $_POST['bulgarian_abbr'];
$theme_id = $_POST['theme_id'];
$english_definition = htmlspecialchars($_POST['english_definition']);
$bulgarian_definition = htmlspecialchars($_POST['bulgarian_definition']);
// Check if an entry already exists
$exists = $db->prepare("SELECT * FROM ".DICTIONARY_TABLE." WHERE english = :english AND theme_id = :theme_id ");
$exists->execute(array(':english' => $english, ':theme_id' => $theme_id));
$count = $exists->rowCount();
if($count > 0) {
echo "<h3 style="color:navy; background:transparent;">⇒ An entry in the same theme already exists.</h3>";
}
else {
$insert = $db->prepare("INSERT INTO ".DICTIONARY_TABLE."
(english, english_abbr, variant, bulgarian, bulgarian_abbr, theme_id)
VALUES
(:english, :english_abbr, :variant, :bulgarian, :bulgarian_abbr, :theme_id)");
$insert->execute(array(':english' => $english,
':english_abbr' => $english_abbr,
':variant' => $variant,
':bulgarian' => $bulgarian,
':bulgarian_abbr' => $bulgarian_abbr,
':theme_id' => $theme_id));
if($insert) {
echo "<h4 style="color:green; background:transparent;">⇒ Term "$english" inserted successfully.</h4>";
if(!empty($english_definition) || !empty($bulgarian_definition)) {
$insert_id = $db->lastInsertId();
$insert_def = $db->prepare(
"INSERT INTO ".DICTIONARY_DEFINITIONS."
(term_id, english_definition, bulgarian_definition)
VALUES
(:term_id, :english_definition, :bulgarian_definition)");
$insert_def->execute(array(
':term_id' => $insert_id,
':english_definition' => $english_definition,
':bulgarian_definition' => $bulgarian_definition));
if($insert_def) {
echo "<h4 style="color:green; background:transparent;">⇒ Definition(s) inserted successfully.</h4>";
}
else {
echo "<h4 style="color:red; background:transparent;">⇒ There was a problem inserting the definition(s)!</h4>";
}
}
unset($_POST); $_POST = array();
}
else {
echo "<h4 style="color:red; background:transparent;">⇒ There was a problem executing the query: </h4>";
}
}
include("insert_form.php");
}
else {
include("insert_form.php");
}
使用htmlspecialchars()
当你把它保存到数据库功能, htmlspecialchars_decode()
函数,当你想再次呼应了。
链接到htmlspecialchars()函数
链接到htmlspecialchars_decode()函数
这是一个模糊的问题,如果你会使用pdo,我甚至不认为你应该处理斜线,但是如果你不想在没有斜线的情况下显示数据,你是否尝试过使用字符串替换?
$search_result = str_replace ("/", "", $search_result);
这应该达到你想要的,如果我明白你的问题是正确的
链接地址: http://www.djcxy.com/p/93667.html