我写了这个查询:
$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());
Run Code Online (Sandbox Code Playgroud)
但是如果我运行这段代码,我总会得到同样的错误:
"字段列表"中的未知列'geir'
这可能是我,但我想我不是说geir是一个列/字段; 有什么问题?
当我直接在我的PHPMyAdmin中运行此查询时,它运行良好.
更新:完整代码:
答案存在,$ Extra变量为Null
$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}";
}
Run Code Online (Sandbox Code Playgroud)
试着把单引号括起来geir.通过不引用要将列设置为的字符串,SQL后端认为您要将Answer列的值设置为列的值geir.由于geir表中不存在该列,因此会引发错误.
编辑:我怀疑PHPMyAdmin有一些SQL语句过滤来捕获这样的情况,并自动为你输入字符串.