首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语句不适用于PDO。

问语句不适用于PDO。
EN

Stack Overflow用户
提问于 2015-01-26 01:38:05
回答 1查看 338关注 0票数 0

编辑:Unité列名中的法语字符似乎有问题。对此是否有解决方案,还是需要重命名数据库中的列?

SELECT语句与PDO一起工作,但INSERT语句不工作。

连接字符串:

代码语言:javascript
复制
$dbCon = new PDO("mysql:host=".$host.";dbname=".$dbName.";charset=utf8", $username, $password);

工作选择声明:

代码语言:javascript
复制
$sql = 'SELECT * FROM availability WHERE event_id=:postID';
$stmt = $dbCon->prepare($sql);
$stmt->execute(array(':postID'=>$postID));
$result = $stmt->fetchAll();

不起作用的插入声明:

代码语言:javascript
复制
$sql = 'INSERT INTO `availability` (`event_id`,`Nom`,`Address`,`Address2`,`Tel1`,`Tel2`,`Tel3`,`Classement`,`Soleil`,`Unité`,`Dispo`,`Ville`,`Type`,`URL`,`Jour1`,`Jour2`,`Jour3`,`Jour4`,`Jour5`,`Jour6`,`Jour7`,`Jour8`,`Jour9`,`Jour10`,`Jour11`,`Jour12`,`Jour13`,`Jour14`,`Jour15`,`visible`) (SELECT :postID,`Nom`,`Address`,`Address2`,`Tel1`,`Tel2`,`Tel3`,`Classement`,`Soleil`,`Unité`,`Dispo`,`Ville`,`Type`,`URL`,`Jour1`,`Jour2`,`Jour3`,`Jour4`,`Jour5`,`Jour6`,`Jour7`,`Jour8`,`Jour9`,`Jour10`,`Jour11`,`Jour12`,`Jour13`,`Jour14`,`Jour15`,`visible` FROM `default_hotels`)';
$stmt = $dbCon->prepare($sql);
$stmt->execute(array(':postID'=>$postID));
$result = $stmt->fetchAll();

另一个工作选择语句:

代码语言:javascript
复制
$sql = 'SELECT post_title FROM wp_posts WHERE id=:postID';
$stmt = $dbCon->prepare($sql);
$stmt->execute(array(':postID'=>$postID));
$records = $stmt->fetchAll();

所有语句都按照这个顺序出现在我的脚本中。变量被重复使用,没有被清除。

我提供的statement语句在通过phpmyadmin提交时工作,而不是PDO。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-26 02:16:36

PHP5.3.6开始支持连接字符串中的PDO charset参数。在那之前它什么也没做。所以问题是,到数据库的连接实际上不是在utf8中运行,而是很可能在latin1中运行。因此,PHP和MySQL中的列名编码不匹配,因此MySQL误解了列名,因此找不到您要求的列。

有关指定连接编码、升级PHP版本或只对列名使用ASCII的替代方法,请参见https://stackoverflow.com/a/279279/476 (不管怎样,这是个好主意,特别是因为它使类似的兼容性问题少了很多问题)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28143689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档