Php PDO:在获得结果时使用斜杠
我使用的是PDO准备的语句,因此在插入数据库之前需要添加斜杠 我想知道如何在不显示斜杠的情况下获得结果并将其显示在网站上 它是否像使用Php PDO:在获得结果时使用斜杠,php,pdo,stripslashes,Php,Pdo,Stripslashes,我使用的是PDO准备的语句,因此在插入数据库之前需要添加斜杠 我想知道如何在不显示斜杠的情况下获得结果并将其显示在网站上 它是否像使用echo stripslashes($result->message)一样简单 以下是我的查询: $database->query('INSERT INTO table_name (field1, field2, field3) VALUES (?, ?, ?)', array($value1, $value2, $value3)); 下面是我的查询方法:
echo stripslashes($result->message)一样简单代码>
以下是我的查询:
$database->query('INSERT INTO table_name (field1, field2, field3) VALUES (?, ?, ?)', array($value1, $value2, $value3));
下面是我的查询方法:
public function query($query, $bind=null)
{
global $pdo;
# Prepare Statment
$this->statement = $this->pdo->prepare($query);
# Execute Query
$this->statement->execute($bind);
}
EDIT:get\u magic\u quotes\u gpc
确实打开了,尽管WHM(cPanel)说它关闭了准备好的语句不会在查询数据中添加斜杠。它们以占位符的形式将参数注入查询,这样占位符就不会被视为查询的一部分,而只是数据的一部分
因此,不添加斜线,也不需要stripslashes()
如果为您添加了斜杠,请确保禁用PDO实例的准备语句模拟:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
get\u magic\u quotes\u gpc
确实打开了,尽管WHM(cPanel)说它关闭了你真的试过看吗?@andrewsi是的,它工作了。我想知道这是否是一种“正常”的方式。不要使用global$pdo
,而是将其注入查询:公共函数查询(pdo$pdo,$query,$bind=null)
使用pdo的优点之一不是因为它具有这样的特性,使查询更安全吗?从我读到的关于PDO的内容来看,我不需要清理查询。我将用我的查询的样子编辑我的OP。@德拉文:没错,你不需要清理你的查询,但不是因为它为你清理了查询。因为查询已经准备好了。举个例子:从id=?的表中选择*?是一个占位符,该查询被编译(在实际数据被注入查询之前),然后数据被注入,因为查询已经被编译,无论什么数据进入占位符,它都不会影响查询。这就是我的想法。在今天运行了更多的测试之后,它似乎只在$\u POST
数据中添加了斜杠。是这样吗?如果我按照你的建议去做,我想我的查询仍然是安全的?@Draven:不,其他的东西为你添加了这些斜杠。因为有人添加了斜杠,而且由于预先准备好的语句,他们不会逃避任何东西,所以您可以在数据中看到这些斜杠。找出谁添加了这些斜杠,然后杀死它。然后,你就会开悟了,小蚱蜢。该死,为所有这些麻烦感到抱歉,谢谢你帮助我。我使用WHM(cPanel)编辑php.ini,并且get\u magic\u quotes\u gpc
的设置表示它已关闭,但我决定无论如何保存它,以防万一,而且现在它确实已关闭。