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

时间:2016-02-10 13:11:01

标签: 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($_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` = ?

我检查了文档,但没有发现我需要逃避{或}

通过构建$message var,我可以看到php收到的所有参数都是正确的。

variablelink是一个有效的列名。

当我在phpmyadmin中尝试SQL查询时,它可以工作。

但是在这个剧本中它总是失败......所以我猜它与prepare()准备我的查询的方式有关...我在这里缺少什么?

0 个答案:

没有答案