Добрый день. Дана такая строка: Код (Text): $keyword='تحميل فيلم اوشن 14'; Далее производится конкетинация: Код (Text): $str='("'.$keyword.'", 1, 2),'; die($str); Из-за арабских символов и отсутствия латинских (слева-направо-го набора) строка переворачивается и получается резалт: ("تحميل فيلم اوشن 14", 1, 2), Т.е. строка выглядит перевернутой. В моем случае запарывается sql-запрос. Что можно сделать?
В моем случае формируется множественный INSERT запрос: Код (Text): $query='INSERT INTO campaign_keywords (`Name`, `CampaignId`, `Order`) VALUES '; foreach($keywords_arr as $keyword){ $i++; $query.='("'.trim($keyword).'", '.$campaign_id.', '.$i.'),'; }
Какая разница, речь о принципе построения запроса. $keyword= "\u202B" . 'تحميل فيلم اوشن 14' . "\u202C" ; Вас спасёт, но код от этого правильнее не станет.
Zuldek, что конкретно имеете ввиду по коду? В первом посте я показал тестовую строчку, на которой видна проблема. Запрос формируется в цикле, но несколько по-другому. Ваше предложение дает следующее: Код (Text): $keyword= "\u202B" . 'تحميل فيلم اوشن 14' . "\u202C"; $str='("'.$keyword.'", 1, 2),'; die($str); ("\u202Bتحميل فيلم اوشن 14\u202C", 1, 2),
PHP: protected $tableName; protected $Insert = 'INSERT INTO '; //Функция выбора Таблицы из БД. public function table($tableName) { $this->tableName = $tableName; return $this; } //Функция экранирующая данные при добавлении public function prepareDataBase ($arr) { $db = Db::getConnection(); $stringIns = []; foreach ($arr as $key => $value) { $stringIns[] = sprintf('%s=%s', $key, $db->quote($value)); }; return $stringIns = implode(', ', $stringIns); } //Функция добавления данных в таблицу БД public function Insert($arr) { $db = Db::getConnection(); $stringIns = $this->prepareDataBase($arr); $result = $db->query($this->Insert . $this->tableName . ' SET ' . $stringIns); } --- Добавлено --- Не чё просто сам не давно решал, вопрос по добавлении данных, в бд. Вот как у меня это сделано.