Php db insert返回带有数值的乱码值
假设这是一个主机问题,但我不认为它怎么会读错(在locahost上非常有效) 我返回一个名为Php db insert返回带有数值的乱码值,php,mysql,mysqli,Php,Mysql,Mysqli,假设这是一个主机问题,但我不认为它怎么会读错(在locahost上非常有效) 我返回一个名为$result的数组,对于循环的这个实例,$v是一个电话号码 $k='phone' $v='(555)555-1212' 我试过了 $result[$k] = preg_replace('/(\W*)/', '', $v); 我也试过了 $result[$k] = preg_replace('/[^0-9]/', '', $v); 我已收到从-198040413到1260583916的任何内容的$v值
$result
的数组,对于循环的这个实例,$v
是一个电话号码
$k='phone'代码>
$v='(555)555-1212'代码>
我试过了
$result[$k] = preg_replace('/(\W*)/', '', $v);
我也试过了
$result[$k] = preg_replace('/[^0-9]/', '', $v);
我已收到从-198040413
到1260583916
的任何内容的$v
值
预期结果为55551212
将两种情况下的结果回显到页面会给出预期的结果,因此这不是预处理问题,必须是db问题
我知道这不是一个int
限制问题,我使用varchar(10)
来测试这个问题
主机是Arvixe.com
使用PHP5.3.27
,我与他们有其他冲突,但是preg\u replace
应该是非常直截了当的代码(你会认为)发现了问题,是插入的问题
我将I
作为类型插入到varchar
中,将其更改为s
作为类型修复了它
// does not work
bind_param('i', $phone);
// does work
bind_param('s', $phone);
当插入varchar
字段时尝试检查echo preg\u replace(“/\D+/”,“,”,$v)代码>首先。您需要缩小问题的范围。首先尝试回显它,而不将其保存到数据库中。如果它没有按预期工作,您可以放心地说数据库正常,问题出在其他地方。现在,我真的看不出有什么问题。你没有给出预期的结果和你实际得到的结果。关于int
:preg_replace()
不返回int,而是返回字符串。基本上,我认为你把预期结果和10位数的数字搞混了only@Kender如何插入它们?你的专栏的编码是什么?这可能是一个编码问题…下面是解决方案,谢谢@HamZa为我指明了正确的方向。请记住,当对应变量的类型为integer时使用i,当对应变量的类型为string时使用s。更多信息,请访问:我唯一的问题是。。。为什么varchar
insert会改变输入数据,即使它是一个完全的数值?解决方案会像用引号括起来一样简单吗?