Отдельный mysql_query от foreach проверки правильности php - PullRequest
0 голосов
/ 03 февраля 2012

Это фрагмент моего кода.По сути, у меня есть новый массив, который я хочу вставить в имя таблицы, но перед этим я проверяю новые статистические показатели по старым, подтверждаю, что они числовые, и вставляю в новую строку.Я сделал, mysql_query находится внутри цикла foreach, он вставляет 5 строк одинаково.Я хочу, чтобы он вставлял только 1 новую строку.

Как вывести mysql_query за пределы цикла, но сохранить проверку, которую предоставляет цикл foreach, перед попыткой вставить новую строку?

1 Ответ

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

Я бы удалил элементы, которые не прошли проверку, из массива, после чего в конце был бы оператор mysql вне цикла.Используйте unset, но вы должны следить за тем, какие ключи нужно сбросить, как это:

foreach ($statnumber as $key => $element) {
    if($statnumber != $LastWeeksStats && is_numeric($element)) {
       //do nothing because it is valid      
    } else {
       //remove that element from the array
       unset($statnumber[$key]);
       echo "'{$element}' is NOT numeric or results same as last week", PHP_EOL;
    }
}  
//now only valid data is in the array and you can use a mysql query

Вам нужно будет обновить запрос mysql, основываясь на том, сколько элементов на самом деле находится в массиве в конце, например:

foreach($statnumber as $key => $element) {
   $keys[] = "stat$key";
   $elements[] = "'$element'";
}
$keystring = implode(",",$keys);
$elementstring = implode(",",$elements);
mysql_query("INSERT INTO tablename (idproducts, $keystring, superstat1) VALUES('8', $elementstring)") or die(mysql_error());  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...