在MySQL数据库中插入句子时出现“à”问题

时间:2018-12-27 17:46:14

标签: php mysqli character-encoding

我正在尝试使用paypal ipn以便在订单完成后将东西插入数据库。

我需要在sql数据库中插入一个句子,该句子是: “这是我的句子àéè”

“é”和“è”字符完全可以正常工作,但是对于“à”,在dabatase中将其替换为“?”。

我完全不知道为什么“à”不起作用,我猜这是字符集的问题。

这是我的代码:

$config = parse_ini_file('config.ini'); 
$conn = mysqli_connect($config['server_name'], $config['mysql_username'], $config['mysql_password'], $config['db_name']) or die(mysqli_error($conn)); 

mysqli_set_charset($conn, "utf8");

$mysql_qry_insert =  "SET NAMES utf8 ";
$resultttt = mysqli_query($conn,$mysql_qry_insert) or die(mysqli_error($conn ));

mb_internal_encoding("UTF-8");

$sentence = $customIpnPaypalVar;
$mysql_qry_insert2 =  "insert into dbTest values ('".mysqli_real_escape_string($conn,$customIpnPaypalVar)."')";
$resultttt = mysqli_query($conn ,$mysql_qry_insert2) or die(mysqli_error($conn ));

数据库向我显示:“这是我的句子?éè”。

我还尝试用à替换à,但没有用。

谢谢。

编辑:

我认为我的问题来自将表格中的数据传递到IPN时出现的贝宝(PayPal)问题,有关发生什么情况的任何想法?

编辑2: 问题肯定来自贝宝,当我在贝宝表单的自定义字段中传递自定义变量并在日志中的ipn中检索它时,它显示出很好的重音,但是当我将变量插入数据库时​​,该重音不起作用,为什么呢?

1 个答案:

答案 0 :(得分:0)

我的问题的解决方案是使用mysqli准备的语句,由于某些原因,特殊字符可用于此方法。而且,它似乎更安全。

谢谢Magnus Eriksson在这里帮助我。