使用php mysqli准备语句插入带正斜杠的字符串时出现问题

问题描述

我对使用 MysqLi 准备好的语句比较陌生,并且在插入包含正斜杠的字符串时遇到问题。

这是我正在使用的代码示例:

// $MysqLi connection
$rxcui = null;
$name = null;
$synonym = null;
$tty = null;

$sql = "INSERT INTO fda_oral (id,rxcui,`name`,`synonym`,tty,hide,created,updated) VALUES (NULL,?,Now(),Now() )";
$stmt = $MysqLi->prepare($sql);
$stmt->bind_param("ssss",$rxcui,$name,$synonym,$tty);

$rxcui = "201903";
$name = "acyclovir 40 MG/ML Oral Suspension [Zovirax]";
$synonym = "Zovirax 40 MG/ML Oral Suspension";
$tty = "SBD";

if ($stmt->execute()) {
    echo "success";
} else {
    echo "Failed";
}

这是失败的。

如果我使用没有斜线的刺,我就成功了,例如)

$name = "acyclovir 400 MG [Zovirax]";
$synonym = "Zovirax 400 MG Oral Suspension";

从我读过的所有内容来看,听起来好像准备好的语句应该处理字符串中的任何特殊字符 - 事实上,在处理可能包含特殊字符的字符串时,这似乎是推荐的解决方案。>

虽然看起来没有必要,但我确实尝试过

 $name = $MysqLi->real_escape_string($name);

我确定我在这里遗漏了一些简单的东西,但我无法弄清楚我哪里出错了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)