Как я могу обновить значение массива и поместить его в базу данных mysql с помощью php? - PullRequest
0 голосов
/ 03 февраля 2012

Хорошо, недавно я задал этот вопрос

Как получить и сохранить несколько переменных $ _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.
    }

}

}
}

1 Ответ

2 голосов
/ 03 февраля 2012

Предполагая, что вы доверяете почтовым данным, чтобы не быть атакой xss:

    foreach ($_POST as $p => $v)
    {

     if (preg_match("/^Q(\d+)$/",$p, $matches)) {   //$_POST variables with Q1, Q2, Q3, etc etc

$id = (int)$matches[1];

    $query_3 = mysql_query("UPDATE SGresults SET SGpost = '$id', SGpostCheck = 1 WHERE SGUID = '$SGUID' AND SGQID = '$id'") or die('Error: '.mysql_error ());
        $SGQID++;

    }
    }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...