2013-10-06 3 views
0

Предполагая, что это вопрос хозяина, но я не вижу, как это может быть чтение неправильно (отлично работает на locahost)дб вставка возврата значений тарабарщину с числовым значением

Я возвращая array называется $result, для этого экземпляр цикла, $v это телефонный номер

$k = 'phone'; $v = '(555) 555-1212)';

Я попытался

$result[$k] = preg_replace('/(\W*)/', '', $v); 

Я также попытался

$result[$k] = preg_replace('/[^0-9]/', '', $v); 

Я получил значения $v ничего от -198040413 к 1260583916 ожидаемого результата будет 5555551212

вторя результатов на страницу для обоих случаев дает ожидаемый результат, поэтому его не проблема preg_repalce, должна быть проблема с db

Я знаю, что это не проблема с лимитом int, я использую varchar(10) для тестирования проблемы

хост Arvixe.com с помощью PHP 5.3.27, я имел другие конфликты с ними, но preg_replace должно быть довольно прямо вперед код (вы могли бы подумать)

+1

Попробуйте проверить 'echo preg_replace ('/ \ D + /', '', $ v);' first. – anubhava

+1

Вам необходимо уменьшить объем проблемы. Попробуйте сначала выполнить эхо-повтор, не сохраняя его в базе данных. Если он не работает должным образом, вы можете с уверенностью сказать, что база данных в порядке и проблема в другом месте. Теперь я не могу понять, в чем проблема. Вы не дали ожидаемых результатов и того, что вы на самом деле получаете. Также вещь о 'int':' preg_replace() 'не возвращает int, она возвращает строку. В основном я думаю, что вы смешиваете вещи – HamZa

+0

с ожидаемым результатом, только с 10-значным номером – Kender

ответ

1

Найдено вопрос, он был со вставкой

Я вставки в varchar используя i как тип, изменяя его s, как тип фиксированной его

// does not work 
bind_param('i', $phone); 

// does work 
bind_param('s', $phone); 

при вводе в поле varchar

+0

Хорошо, что вы исправили проблему ... – HamZa

+0

Отлично. Помните, что i используется, когда соответствующая переменная имеет тип integer и s используется, когда соответствующая переменная имеет тип string. Для получения дополнительной информации перейдите по адресу: http://php.net/manual/en/mysqli-stmt.bind-param.php – pablofiumara

+0

Мой единственный вопрос: почему бы вставка 'varchar' изменить входные данные, даже если это является полностью числовым значением? было ли решение таким же простым, как обертывание вставки в кавычки? – Kender

Смежные вопросы