【发布时间】:2011-11-02 21:31:09
【问题描述】:
我已经为此苦苦挣扎了三天,这就是我所得到的,我不明白为什么我会看到这种行为。
我的问题是我有一个 MySql 西班牙数据库,其字符集和排序规则定义为 utf8_general_ci。当我像这样在 delete.php 中查询数据库时"DELETE FROM countryNames WHERE country = '$name'"
指定的行不会被删除。我通过 post 变量 $name=$_post['data'] 在 delete.php 中设置变量 $name 。主要是 $name 获取西班牙语字符的值,例如 español、México 等。 delete.php 文件从 main.php 调用。如果我从 main.php $.post("delete.php", {data:filename}); 发送帖子消息,查询不会删除条目(尽管'filename' 字符串在 utf8 中)但是如果我创建一个表单然后在 main.php 中发布我的数据变量,则查询有效!对我来说最大的问题是为什么我必须提交表格才能使查询起作用?我看到的是我的数据库拒绝该值,如果它来自一个 jquery post call,但当它来自提交的表单时接受它。 (我没有对查询进行任何代码更改。只需通过提交表单来发布值)
【问题讨论】:
-
对 post 变量执行
var_dump并查看在这两种情况下得到的结果。 -
@Neal:在这两种情况下,它都表示 string(37) 或 string(34) 等。
标签: php mysql character-encoding