Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO prepare()使包含{{}的变量的有效请求失败_Php_Mysql_Pdo - Fatal编程技术网

Php PDO prepare()使包含{{}的变量的有效请求失败

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

我尝试使用以下服务器端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($_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足够安全。然而,在您的位置,我会考虑使用相同的标记在这里使用,如果可能的话。它既安全又易于使用。