Есть код: PHP: <? if ($_POST['submit'] == "Save"){ while (current($HTTP_POST_VARS)){$keys .= "'".key($HTTP_POST_VARS)."'"; next($HTTP_POST_VARS);} $keys = str_replace("''","','",$keys); $keys = str_replace("'","",$keys); $values = "'".implode ("','", $HTTP_POST_VARS)."'"; $resultLanguages = mysql_query ("UPDATE yd_languages SET (".$keys.") VALUES (".$values.")",$db); ?> Знаю что запрос вбазу не правильный, как сделать правильно. Скрипт читает массив с $_POST и должен одним запросом обновить все эти данные в базе.[/code]
ng0d точечные удары куда попало? если все значения которые надо выставить одинаковые - да можно хоть весь столбец обновить за один заход. у тебя, так понимаю, все - разные. =) В колонну строго по-одному!
в $_POST передаётся язык, то-есть например такое: save="Сохранить", delete="Удалить" и т.д., их 50 количеств и зависят на какой странице находишься. Далее надо чтобы происходило обновление фраз в базе, фраза имеет кодовое (например save) название и сам перевод(например Сохранить).
PHP: <?php /** * Формирует и проверяет запрос update. * @see update * @throws SqlException, FormatException * @param mixed $arr Запрос для проверки или массив со значениями * @param string $tab Таблица, в которой обновляются значения * @param mixed $where Условие, по которому обновляются значения, или id записи для обновления * @return string Проверенный запрос */ public function getUpdate($arr, $tab=null, $where=null){ $sql=""; if (is_array($arr)){ if (empty($tab) || !is_string($tab)) throw new FormatException("Не задана таблица для вставки строки","Неверный тип данных"); $sets=$this->getAssignmentString($arr, ","); $expr=$this->getWhere($where); $sql="update $tab set ".$sets.$expr; //Создаем запрос } else{ $sql=trim($arr.""); } $this->checkQuery($sql); return $sql; } getWhere и getAssignmentString искать здесь.
Сделал вот так, всёравно пришлось делать в цикле, наверно по другому нельзя, хотя это для админки, запросы там не так то страшны. PHP: <? if ($_POST['submit'] == $lang['save']) { while (current($HTTP_POST_VARS)) { $keys .= key($HTTP_POST_VARS) . ","; next($HTTP_POST_VARS); } $values = implode(",", $HTTP_POST_VARS); $values = explode(",", $values); $keys = explode(",", $keys); for ($numPost = 0; $numPost < count($keys); $numPost++) { $values[$numPost] = htmlspecialchars(stripslashes(trim($values[$numPost]))); $keys[$numPost] = htmlspecialchars(stripslashes(trim($keys[$numPost]))); if (empty($error)) { $resultLanguages = mysql_query("UPDATE yd_languages SET language_ru='" . $values[$numPost] . "' WHERE language_name='" . $keys[$numPost] . "'", $db); } } } ?>