Хорошо, недавно я задал этот вопрос
Как получить и сохранить несколько переменных $ _POST в a для каждого цикла?
И ответ был идеальным, и он отлично работал для вставки значений в базу данных. Тем не менее, я сейчас пересматриваю этот проект и хочу ОБНОВИТЬ только одно поле в базе данных, в частности поле после тестирования для этого конкретного пользователя, используя тот же или аналогичный метод. Как это было бы возможно?
В настоящее время у меня есть что-то вроде этого.
$SGUID = the Unique User ID
$SGpost = the field i want to update
$SGQID = question ID
Очевидно, это не работает .. и мой код очень неаккуратный, так как я пытался заменить и отредактировать это по пути. Есть идеи?
foreach ($_POST as $p => $v)
{
if (preg_match("/^Q\d+$/",$p)) { //$_POST variables with Q1, Q2, Q3, etc etc
$query_3 = mysql_query("UPDATE SGresults SET SGpost = '$p', SGpostCheck = 1 WHERE SGUID = '$SGUID' AND SGQID = '$p'") or die('Error: '.mysql_error ());
$SGQID++;
}
}
}
Когда я повторяю $ p, я получаю следующее
Q11
Q21
Q31
Q44
Q54
Q63
Q73
Q83
Q93
Q103
Q111
Q122
Q131
Q142
Q153
Q163
Q17
Что я и хочу, кроме без Q и только второго значения. Так, например, если это был 'Q163', я просто хочу вставить часть '3' в SGpost, ГДЕ база данных 'Q16'.
Еще раз спасибо! Любая помощь будет принята с благодарностью!
EDIT ::
Посмотрел мой код еще раз и изменил некоторые значения вокруг ... Следующее работает, так что я думаю, что буду придерживаться его. Разве плохой код? Еще раз спасибо за ваши предложения.
$SGQID= 1;
foreach ($_POST as $i => $v)
{
if (preg_match("/^Q\d+$/",$i)) { //$_POST variables with Q1, Q2, Q3, etc etc
// Here we insert value $v to database
if ($SGtestType == "Post-test") {
$query_post = mysql_query("UPDATE SGresults SET SGpost = '$v', SGpostcheck ='1' WHERE SGQID = '$SGQID' AND SGUID = '$SGUID' ") or die('Error 109: '.mysql_error ());
$SGQID++;
// ^^ increments the question value everytime an insert is made
//last 2 fields is check for existing value.. or if not exists.. 1 if it does.
}
}
}
}