我正在尝试使用PHP/MySQL创建一些页面。是mysqli bind_param的罪魁祸首?无法保存特殊字符,例如€
我的数据库表设置为utf8_general_ci
,表列也是如此。如果我使用phpmyadmin并手动插入一个页面,我可以键入所有€我想要的,他们将被插入为€。我也可以完美地展示这一点。
然而,当我试图插入使用的mysqli的€网页将被转换为â,¬
我没有做任何形式的转换。如果我在即将插入页面之前回显页面列fiels,它仍会正确显示€。
代码:
$connection = new mysqli('localhost', 'root', '', 'some_db');
$query = 'INSERT INTO page (ID, title, content) VALUES (?, ?, ?)';
$params = array('iss', 'NULL', 'test title', '€ some content');
$stmt = $connection->prepare($query);
call_user_func_array(array($stmt, 'bind_param'), by_ref($params));
$stmt->execute();
的by_ref
功能只能使一个参考,没有别的。所有的工作都很好,只是当它没有正确插入时,它让我头疼。也许它不是bind_param,而是别的。我想知道答案!
更新:
由于数字精确我想通了,我必须确保连接打算用“UTF8”。不过,我只需要在使用INSERT或UPDATE时进行设置,因为SELECT确实给我返回了utf8的结果。希望这可以帮助别人
并不能帮助我,当我插入,但使选择额外的怪异(即â,¬再次转换到页*) – Tessmore
@Tessmore:尝试'$ connection-> get_charset()'并查看当前值是什么。 –
@Tessmore:还有其他一些事情要尝试;尝试不使用绑定的查询,并尝试绑定在call_user_func_array之外。 –