Pdo为何把我们int型都转换成string型了,能不能让他不转???
要设置什么参数??
这个设计是基于什么考虑???有点小坑爹啊
回复讨论(解决方案)
你需要在传参时候设置它的类型,当然了,可以设置成-1,你设置了吗
你需要在传参时候设置它的类型,当然了,可以设置成-1,你设置了吗 不明白 能给个示例代码吗?或者 哪个地方有讲解给个地址
Pdo为何把我们int型都转换成string型了
这块的代码是指bindParam吗?
在不同的应用程序间就换数据时,传递的只能是文本。
不清楚你想弄明白什么
Pdo为何把我们int型都转换成string型了
这块的代码是指bindParam吗? 最后从数据库返回的数据
在不同的应用程序间就换数据时,传递的只能是文本。
不清楚你想弄明白什么 意思说我只能自己转换类型了?
php 会根据上下文自动转换数据类型。不需劳你费神
引用 4 楼 的回复:
在不同的应用程序间就换数据时,传递的只能是文本。
不清楚你想弄明白什么
意思说我只能自己转换类型了?
从库里出来的都是字符串
php 会根据上下文自动转换数据类型。不需劳你费神
我做判断的是 不行了 ==
再如果 两者要做 计算就不行了!
代码没看到,在这里真难猜。
给点实例啊,楼主
请帖出代码
public function setGBK() { $sql = sprintf( "set names 'gbk'" ); $this->conn->exec( $sql ); } public function setBinary() { $sql = sprintf( "set character_set_client=binary" ); $this->conn->exec( $sql ); } public function doExec($sql){ $sql = sprintf($sql); $this->conn->exec( $sql ); } public function query( $sql, $param ) { if( empty( $sql ) || empty( $this->conn ) ) { return array(); } $result = $this->conn->prepare( $sql ); if ( false == $result->execute($param) ) { return array(); } $result->setFetchMode( PDO::FETCH_ASSOC ); $row = $result->fetch(); if( $row ) { return $row; }else { return array(); } } public function querys( $sql, $param ) { if( empty( $sql ) || empty( $this->conn ) ) { return array(); } $result = $this->conn->prepare( $sql ); if ( false == $result->execute($param) ) { return array(); } $result->setFetchMode( PDO::FETCH_ASSOC ); $rows = $result->fetchAll(); return $rows; }
除了 false == 外,没有什么与数据类型的相关的
况且 false == 应写作 false === ,这样才真正与类型相关
除了 false == 外,没有什么与数据类型的相关的
况且 false == 应写作 false === ,这样才真正与类型相关
按照原理 "1" == 1 但是 我这里 return "1"==1 就是false,非得 intval哈才是false
这里不是问题
问题是做算术运算的是 “10”- 5 这样的头疼,我都是强制intval了就好了
也许是我的代码逻辑哪里有问题吧
但是pdo这种 数据库的int返回的string的情况真的给我带来不少麻烦
mysqli 可没这样的问题
从mysql数据库返回的查询结果都是文本,都会被当成字符串处理,因为PHP并不知道你的表结构。 mysqli和pdo都是这样!
这个问题是挺操蛋的。我也没有找到解决办法。
$db = new PDO('mysql:host=' . $host . ';port=3306;dbname=' . $dbname, $username, $password,
array(PDO::ATTR_PERSISTENT => TRUE, PDO::ATTR_STRINGIFY_FETCHES => FALSE));
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, FALSE);
$query = "SELECT `name`, `boss`, `madeTime`, `rules`, `id` FROM `company`";
$r = $db->query($query);
$r->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, FALSE);
while ($row = $r->fetch(PDO::FETCH_OBJ)) {
$row['id']; //type is string!!!!
}
据说,蓝色代码是设定它不自动转换为字符串的,但是,无效。红色代码运行时直接告诉我不支持。
别告诉我说PHP自动给我转换类型的屁话。我要把$row转换为JSON,都转换成字符串类型了……
getColumnMeta(columnIndex)返回的列元信息里面倒是有正确的类型,但是有两个问题:
一、它采用列索引而不是列名作为参数,跟我的读取凡是不符合
二、官网上说不要使用这个函数,它可能在任何时候不做任何通知而进行规格更改
成功解决这个问题,汇报一下。
首先,在以前的MySQL中还真是不能解决的。它直接返回字符串给外部系统。稍微新一点的MySQL和客户端驱动可以直接内部的本地类型而不再进行内部转换为字符串了。有了这个基础,就有解决的可能了。
其次,PDO::ATTR_STRINGIFY_FETCHES对于MySQL来说是无关的,要使用PDO::ATTR_EMULATE_PREPARES(设为FALSE)来告诉MySQL端不要进行转换。
最后,当然是用PDO::ATTR_STRINGIFY_FETCHES告诉PHP也不要进行转换了。
至此,问题解决。
同样是转 JSON 时遇到这个问题, 后来发现 json_encode() 有一个参数 JSON_NUMERIC_CHECK.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> 'Hello World', 'github.com'=> [ 'foo'=> 'bar'], 'forge.laravel.com'=>

Alipay PHP ...

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.

기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.
