繁体   English   中英

插入特殊字符/ PHP + MySql + Android

[英]Insert special Characters / PHP + MySql + Android

这个问题已经问了很多次,但是没有建议的解决方案对我有用:(

我需要使用Android通过PHP将特殊字符(例如'(右撇号)插入MySql DB中。

MySql表定义为:

ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据通过Java传递给PHP,因此:

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("param1", value1));       
nameValuePairs.add(new BasicNameValuePair("param2", value2));

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("blabla.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
response = httpclient.execute(httppost);

PHP收到它是这样的:

//To be able to receive UTF-8 (needed?)


mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');

$param1 = $_POST['param1'];
$param2 = $_POST['param2'];

//Convertsion to UTF-8 (needed?)
$param1 = utf8_decode($param1);
$param2 = utf8_decode($param2);

$mysqli = new mysqli($hostname, $username, $password, $dbname);
mysqli_set_charset('utf8',$mysqli);
$mysqli->prepare("INSERT INTO ...

插入命令插入记录,但特殊字符变为“?” 在桌子上。 有什么帮助吗?

即“ A'B”进入数据库:“ A?B”

谢谢

删除对utf8_decode函数的调用就可以了!

尝试mysqli_real_escape_string()函数。 考虑到连接的当前字符集,这会转义字符串中的特殊字符以用于SQL语句。

例:

mysqli_real_ecape_string($mysqli,$param1);
mysqli_real_ecape_string($mysqli,$param2);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM