Intereting Posts
как получить имена файлов из файла входного типа в html 5 с помощью javascript или jquery SilverStripe за балансировщиком нагрузки Как правильно использовать array_udiff ()? Какие символы НЕ экранированы с помощью подготовленного оператора mysqli? отображение нескольких шаблонов в одном файле Smarty Smart сообщение «недостаточное количество данных для изображения» при открытии PDF-файла выполняется условие после && всегда оценивается Не удалось получить данные объекта Yii2, возвращенные как Json Сохранение файла с помощью curl и PHP Рабочий пример реализации «Аутентификация на основе токенов» с использованием «JSON Web Token (т.е. JWT)» в PHP и MySQL? Как получить часовой пояс по IP Предлагаемое решение: создание уникальных идентификаторов в распределенной среде php тот же результат, добавляющий различное количество vars Сортировка массива по свойству объекта в PHP? Как заставить загрузку изображений в браузере?

Невозможно получить запись для вставки в данные mysql с помощью PHP

Я использую PHP для заполнения базы данных записей компании. У меня есть поле для названия компании и тип валюты, который они используют.
Но когда я использую PHP, запись никогда не встает, если валюта – знак Enlglish pound (£). Знак доллара ($) или любой другой нормальный символ не является проблемой. Запись с значком фунта вставляется просто отлично, когда я запускаю оператор sql и вводим его непосредственно в MySQL Query Browser. Но это просто не работает, когда я запускаю то же самое заявление INSERT в PHP.

$sql = "INSERT INTO company_test (name, currency) VALUES ('ABC Widgets', '£')"; $rs = mysql_query($sql, $conn); //Does not insert a record $sql = "INSERT INTO company_test (name, currency) VALUES ('ABC Widgets', '$')"; $rs = mysql_query($sql, $conn); //A record inserts just fine //My MySQL version is 5.5.11. PHP is version 5.3.6. //The MySQL table looks like this: TABLE company_test FIELD | id | INTEGER(10) | not null | auto increment FIELD | name | VARCHAR(45) | not null FIELD | currency | VARCHAR(3) 

В MySQL Query Browser вкладка «Параметры таблицы» показывает, что для этой таблицы company_test моя кодировка – utf8.

Благодарю.

Solutions Collecting From Web of "Невозможно получить запись для вставки в данные mysql с помощью PHP"

Проверьте наличие ошибок:

 $rs = mysql_query($sql, $conn) or die(mysql_error()); ^^^^^^^^^^^^^^^^^^^^^ 

Никогда не предполагайте, что запрос будет успешным. Даже если ваш синтаксис SQL идеален, существует слишком много других причин, по которым НЕ МОЖЕТ проверить.

После некоторого Googling я наконец нашел что-то, что сработало. Кто-то с подобным, вероятно, создал функцию PHP, которая преобразует набор символов в оператор sql.
Теперь мой запрос выглядит следующим образом: INSERT INTO company_test (имя, валюта) VALUES ('ABC Widgets', 'Â £') Обратите внимание на забавный маленький персонаж перед значком фунта.

В любом случае здесь функция:

 function TtoUtf8( &$string, $encType = 'ISO-8859-1' ) { $enc = mb_detect_encoding( $string ); $enc ? $enc = $enc : $enc = $encType; if ( $enc == 'UTF-8' ) { return $string; // end if $enc == UTF-8 } else { $conv = iconv( $enc, 'UTF-8//TRANSLIT', $string ); $conv ? $ret = &$conv : $ret = &$string; return $ret; } 

}

Почему бы вам не преобразовать его сначала в htmlentities или htmlspecialchar:

 $currency = htmlspecialchars('£'); $sql = "INSERT INTO company_test (name, currency) VALUES ('ABC Widgets', '{$currency}')"; 

Кроме того, какой тип данных является полем вашей валюты?