@WebforSelf

Как обновить поле mysql через php?

Есть задача в таблице options взять поле name сделать транслитерацию и записать в поле url в этой же таблице
Создал файл, подтянул данные с таблицы options
в переменной данные есть.
require_once('api/buyers.php');
$buyers = new Buyers();

$buyers->db->query("SELECT id, value FROM options");
foreach($buyers->db->results() as $o){
    print_r($o);
    $buyers->features->update_option($o->id,array('url' => $buyers->features->translit($f->value)));
}
print_r('<br /><br />Свойства транслитерированы');

дальше через функцию для этой таблицы update_option обновляю, в верхнем коде обращаюсь к ней.

public function update_option($option)
	{
		if(!empty($option->value))
		{
			//проверяем есть ли такое значение в базе
			$query = $this->db->placehold("SELECT id FROM options WHERE value=? AND product_id=? AND feature_id=?", trim($option->value), intval($option->product_id), intval($option->feature_id));
			$this->db->query($query);
			//если нет то добавляем
			if(!$this->db->result('id'))
			{
				$query = $this->db->placehold("INSERT INTO options SET ?%", $option);
			}
		}
		//else
			//$query = $this->db->placehold("DELETE FROM options WHERE feature_id=? AND product_id=?", intval($option->feature_id), intval($option->product_id));
		return $this->db->query($query);
	}
ну и функцию транслита
	    public function translit($text){
        $ru = explode('-', "А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я"); 
		$en = explode('-', "A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch---Y-y---E-e-YU-yu-YA-ya");

	 	$res = str_replace($ru, $en, $text);
		$res = preg_replace("/[\s-_]+/ui", '', $res);
		$res = preg_replace('/[^\p{L}\p{Nd}\d-]/ui', '', $res);
	 	$res = strtolower($res);
	    return $res; 
    }


Но в итоге поле url в таблице options не заполняется.
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Akela_wolf
Extreme Programmer
Во-первых очень хорошо было бы указывать что за библиотека используется для работы с БД. Потому что гуглить вот эти вот все $db->query, $db->placehold - удовольствие ниже среднего

Во-вторых, я вижу что функция update_option вызывается с двумя параметрами, в первом передается идентификатор, во втором передается результат транслитерации. Но сама функция имеет один аргумент, причем работает с ним как с объектом. По-моему здесь что-то не так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы