我尝试使用以下服务器端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()准备我的查询的方式有关...我在这里缺少什么?