我写了这个查询:
$query = "UPDATE encodage_answer
SET Answer = geir
WHERE encodage_question_ID = 128
AND encodage_ID = 305
AND Extra = NULL";
$insert = mysql_query($query, $connection) or die(mysql_error());但是,如果我运行这段代码,我总是会得到相同的错误:
“字段列表”中的
未知列“geir”
可能是我,但我想我不是说geir是一个专栏/字段,有什么问题吗?
当我在我的PHPMyAdmin中直接运行这个查询时,它工作得很好。
更新:完整代码:
答案是存在的,$Extra变量为空
$AnswerExists = answer_exists($Question_ID, $encodage_ID, $Extra);
if($AnswerExists <> ""){
if($Answer != NULL){
$correctAnswer = mysql_prep($Answer);
if($Extra != NULL){
$query = "UPDATE `encodage_answer` SET `Answer` = '" . mysql_prep($Answer) . "' WHERE `ID` = '" . $AnswerExists . "'";
$insert = mysql_query($query, $connection) or die(mysql_error());
$query2 = "UPDATE `encodage_answer` SET `Extra` = '" . $Extra . "' WHERE `ID` = '" . $AnswerExists . "'";
$insert = mysql_query($query2, $connection) or die(mysql_error());
}else{
$querytest = "UPDATE `encodage_answer` SET Answer = " . $Answer . " WHERE ID = " . $AnswerExists;
$insert = mysql_query($querytest, $connection) or die(mysql_error());
}
}
}
function answer_exists($Question_ID, $encodage_ID, $Extra){
global $connection;
$trfa = false;
echo $Question_ID . " - " . $encodage_ID . "<br />";
if($Extra <> ""){
$query = "SELECT *
FROM encodage_answer
WHERE encodage_ID = {$encodage_ID} AND encodage_question_ID = {$Question_ID} AND Extra = {$Extra}";
}else{
$query = "SELECT *
FROM encodage_answer
WHERE encodage_ID = {$encodage_ID} AND encodage_question_ID = {$Question_ID}";
}发布于 2011-02-03 00:29:01
尝试将单引号放在geir周围。通过不引用要将列设置为的字符串,SQL后端认为要将Answer列的值设置为geir列的值。由于您的表中不存在geir列,因此它会引发一个错误。
编辑:--我怀疑PHPMyAdmin有某种类型的SQL语句过滤来捕捉这样的情况,并且会自动为您在字符串周围放置引号。
发布于 2011-02-04 00:09:08
谢谢大家的帮助!我正在将所有查询更改为更安全的格式!SQL注入治疗不再是一个问题!谢谢你告诉我!
关于我的问题:我是个十足的白痴!在寻找了20个小时的解决方案后,我发现了我的错误!该错误用于另一个查询。我很抱歉浪费了你的时间,但我是新手(因此,sql注入问题),所以我希望我可以犯一些错误。
谢谢
延斯
https://stackoverflow.com/questions/4881539
复制相似问题