Php PDO prepare()使包含{{}的变量的有效请求失败
我尝试使用以下服务器端php脚本在数据库中插入一些数据:Php PDO prepare()使包含{{}的变量的有效请求失败,php,mysql,pdo,Php,Mysql,Pdo,我尝试使用以下服务器端php脚本在数据库中插入一些数据: $questionID = htmlentities(filter_var($_GET['questionID'], FILTER_SANITIZE_STRING), ENT_QUOTES); $typeVal = htmlentities(filter_var($_GET['typeVal'], FILTER_SANITIZE_STRING), ENT_QUOTES); $newVal = htmlentities(filter_var
$questionID = htmlentities(filter_var($_GET['questionID'], FILTER_SANITIZE_STRING), ENT_QUOTES);
$typeVal = htmlentities(filter_var($_GET['typeVal'], FILTER_SANITIZE_STRING), ENT_QUOTES);
$newVal = htmlentities(filter_var($_GET['newVal'], FILTER_SANITIZE_STRING), ENT_QUOTES);
try {
$query = 'UPDATE `questions` SET `'.$typeVal.'` = ? WHERE `id_question` = ?';
$res = $con_init->prepare($query);
$result = $res->execute(array($newVal, $questionID));
} catch (Exception $e)
{
die('Error query: ' . $e->getMessage() . 'code : ' . $e->getCode());
}
$message = $typeVal." ".$newVal." ".$typeVal." ".$questionID. " ".$query." ".$con_init->debugDumpParams();
if ($result == true)
{
$return = array('message' => $message);
} else
{
$return = array('message' => "Fail ".$message);
}
echo json_encode($return);
我要更新的值将收到以下内容:{{yyyyyy}
$message
的内容是:
variablelink {{yyyyyy}} variablelink 116 UPDATE `questions` SET `variablelink` = ? WHERE `id_question` = ?
我查了一下医生,但没有发现我需要逃走{or}
通过构建$message
var,我可以看到php接收到的所有参数都是正确的
variablelink是有效的列名
当我在phpmyadmin中尝试SQL查询时,它可以工作
但在这个脚本中,它总是失败。。。因此,我想这与prepare()准备查询的方式有关……我在这里缺少什么?您的代码容易出现sql注入。我的筛选器出错了?它们是HTML筛选器,而注入是在sql中。是的,据我所知,htmlpurifier足够安全。然而,在您的位置,我会考虑使用相同的标记在这里使用,如果可能的话。它既安全又易于使用。