PDO在PHP5.4中将整数列作为String返回
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PDO在PHP5.4中将整数列作为String返回,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1780字,纯文字阅读大概需要3分钟。
内容图文
首先,我知道SO上存在各种类似的问题,例如this和this.但是,当我从表中获取值时,整数总是作为字符串来获取.
我正在使用PHP5.4(5.4.16-1?dotdeb.1)和MYSQL5.5(5.5.31 dfsg-0 wheezy1).编写here时,PHP5.4.0中默认启用了MySQL本机驱动程序.但是我仍然得到字符串值.
我按如下方式初始化PDO对象.
try {
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8';
$db = new PDO($dsn,DB_USER,DB_PASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
header('HTTP/1.1 500');
exit;
} catch (Exception $e) {
header('HTTP/1.1 500');
exit;
}
当我插入时,我尝试使用execute(array(…))格式,还使用bindValue(…,PDO :: PARAM_INT),但它们没有任何区别.
例如,这是我插入新行的方式.
public function insertList ($db,$account_id,$list_name) {
$sql = $db->prepare('INSERT INTO lists VALUES (?,?,?,?,?)');
try {
// $sql->execute(array($list_name,0,0,0,$account_id));
$sql->bindValue(1,$list_name,PDO::PARAM_STR);
$sql->bindValue(2,0,PDO::PARAM_INT);
$sql->bindValue(3,0,PDO::PARAM_INT);
$sql->bindValue(4,0,PDO::PARAM_INT);
$sql->bindValue(5,$account_id,PDO::PARAM_INT);
$sql->execute();
} catch (PDOException $e) {
header('HTTP/1.1 500');
exit;
} catch (Exception $e) {
header('HTTP/1.1 500');
exit;
}
}
这是我从表中获取行的方式
public function fetchLists ($db,$account_id) {
$sql = $db->prepare('SELECT * FROM lists WHERE account_id=?');
try {
$sql->execute(array($account_id));
$result = $sql->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
header('HTTP/1.1 500');
exit;
} catch (Exception $e) {
header('HTTP/1.1 500');
exit;
}
return $result;
}
当我在使用PHP5.4.7的Linux 1.8.1的XAMPP上进行测试时,没有发生这种情况.我目前使用nginx代替Apache.
怎么了?
解决方法:
要从带有PDO的mysql获取整数和带有相应类型的浮点数,您既需要基于mysqlnd的PDO-mysql,又需要关闭仿真模式.
内容总结
以上是互联网集市为您收集整理的PDO在PHP5.4中将整数列作为String返回全部内容,希望文章能够帮你解决PDO在PHP5.4中将整数列作为String返回所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。