[英]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.