- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 MySqli real_escape_string 准备一些文本以包含在 SQL 查询中,但就目前情况来看,real_escape_string 似乎不能很好地处理撇号。我在下面添加了一些测试代码:
function validMySQLtest($var) {
$conn= connopen();
conncheck();
$var = str_replace("£", "£", "$var");
$var = str_replace("'", "\'", "$var");
$var=htmlentities($var, ENT_QUOTES, "UTF-8");
echo "Entities " . $var . "<br />";
$var=stripslashes($var);
echo "Stripslashes " . $var . "<br />";
$var=strip_tags($var);
echo "Striptags " . $var . "<br />";
$var = $conn->real_escape_string($var);
echo "Escape String " . $var . "<br />";
connclose();
return $var;
}
validMySQLtest("In medieval times Germany produced most of the world's brass.");
代码输出如下;
Connected successfully....
Entities In medieval times Germany produced most of the world\'s brass.
Stripslashes In medieval times Germany produced most of the world's brass.
Striptags In medieval times Germany produced most of the world's brass.
Escape String In medieval times Germany produced most of the world's brass.
....Connection closed.
据此我发现 str_replace、stripslashes 和 striptags 似乎可以工作,但 real_escape_string 似乎不起作用。
任何想法将不胜感激。
编辑:为了回应评论,我添加了 connopen 和 conncheck 代码:
// Open connection
function connopen() {
$conn = new mysqli(servername, username, password, dbname);
return $conn;
}
//Check connection
function conncheck() {
$conn = connopen();
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
echo "Connected successfully....<br /><br />";
}
}
最佳答案
技术上正确的答案可能是一个更好的通用文本处理例程,这对编写来说有点挑战,并且可能会让您陷入神秘的细节中,尤其是当您开始处理字符集的模糊性时 - 并且如果您的程序要安全,通常您确实需要这样做,或者更好地避免使用准备好的语句(如上面 tadman 所建议的那样)。
但是,如果您只是想要一种快速而肮脏但简单有效的方法来处理特别是单引号字符,那么这样的方法是有效的。
$var = htmlspecialchars(str_replace("'", "’", $v), ENT_QUOTES, 'ISO-8859-1');
请注意,我们正在替换单引号字符,它不是撇号。从打印上来说,“Sean O'Mara”或“world's Brass”中使用的正确字符是撇号,它在视觉上与单引号 (rsqo) 非常相似,因此从语言角度来看,我们在这里做的是正确的事情。有时这确实是正确的答案,特别是当您希望输出的打印正确时。例如,将大段文本(错误地)输入为“Sean O'Mara”,并用真正的撇号全局替换单引号(这更容易键入)要容易得多。哦,真正的撇号也不会混淆您的数据库,它只是另一个字符,例如“p”或“W”。
关于PHP mySQLi real_escape_string 不适用于撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31142368/
我在我的 Xcode 项目目录中输入了以下内容: keytool -genkey -v -keystore release.keystore -alias mykey -keyalg RSA \
假设我有一个像这样的 DataFrame(或 Series): Value 0 0.5 1 0.8 2 -0.2 3 None 4 None 5 None
我正在对一个 Pandas 系列进行相对繁重的应用。有什么方法可以返回一些打印反馈,说明每次调用函数时在函数内部进行打印还有多远? 最佳答案 您可以使用跟踪器包装您的函数。以下两个示例,一个基于完成的
我有一个 DataFrame,其中一列包含列表作为单元格内容,如下所示: import pandas as pd df = pd.DataFrame({ 'col_lists': [[1, 2
我想使用 Pandas df.apply 但仅限于某些行 作为一个例子,我想做这样的事情,但我的实际问题有点复杂: import pandas as pd import math z = pd.Dat
我有以下 Pandas 数据框 id dist ds 0 0 0 0 5 1 0 0 7 2 0 0
这发生在我尝试使用 Gradle 构建时。由于字符串是对象,因此似乎没有理由发生此错误: No signature of method: java.util.HashMap.getOrDefault(
您好,有人可以解释为什么在 remaining() 函数中的 Backbone 示例应用程序 ( http://backbonejs.org/examples/todos/index.html ) 中
我有两个域类:用户 class User { String username String password String email Date dateCreated
问题陈述: 一个 pandas dataframe 列系列,same_group 需要根据两个现有列 row 和 col 的值从 bool 值创建。如果两个值在字典 memberships 中具有相似
apporable 报告以下错误: error: unknown type name 'MKMapItem'; did you mean 'MKMapView'? MKMapItem* destina
我有一个带有地址列的大型 DataFrame: data addr 0 0.617964 IN,Krishnagiri,635115 1 0.635428 IN,Chennai
我有一个列表list,里面有这样的项目 ElementA: Number=1, Version=1 ElementB: Number=1, Version=2 ElementC: Number=1,
我正在编译我的源代码,它只是在没有运行应用程序的情况下终止。这是我得到的日志: Build/android-armeabi-debug/com.app4u.portaldorugby/PortalDo
我正在尝试根据另一个单元格的值更改单元格值(颜色“红色”或“绿色”)。我运行以下命令: df.loc[0, 'Colour'] = df.loc[0, 'Count'].apply(lambda x:
我想弄清楚如何使用 StateT结合两个 State基于对我的 Scalaz state monad examples 的评论的状态转换器回答。 看来我已经很接近了,但是在尝试申请 sequence
如果我已经为它绑定(bind)了集合,我该如何添加 RibbonLibrary 默认的快速访问项容器。当我从 UI 添加快速访问工具项时,它会抛出 Operation is not valid whi
在我学习期间Typoclassopedia我遇到了这个证明,但我不确定我的证明是否正确。问题是: One might imagine a variant of the interchange law
我是一名优秀的程序员,十分优秀!