mysql返回修改后

mysql返回修改后,第1张

mysql返回修改后的列_PDO Mysql驱动返回结果的列类型问题

PDO的Mysql驱动返回的结果中,所有的字段都是字符串

使用statement->getColumnMeta得到的列元信息,其中的pdo_type也表明是字符串。

php可以自动处理类型转换,比如整型和字符串,但是对于其他环境,比如传给其他平台(如flash),就要在其中一端进行类型转换,或者在协议中处理。另外,要基于查询结果的元信息构建自动化的数据处理,比如ORM,也就不方便了。

原因是,mysql驱动使用mysql_fetch_row函数取得结果集,它是个字符串数组,即所有列都是字符串方式的存储,并且没根据DB存储的类型进行转换,相应地,列的元数据也就都是字符串类型了;

另外,pdo本身的数据类型也有限,跟DB、DB客户端库函数的数据类型有差异,比如pdo没有浮点数类型。

根据pdo接口规范,只要修改mysql驱动中的两个回调函数就可以了:

//连接、查询

try {

$dbh = new PDO('mysql:host=localhostdbname=test', $user, $pass)

foreach($dbh->query('SELECT * from FOO') as $row) {

print_r($row)

}

$dbh = null//释放资源

} catch (PDOException $e) {

print "错误!: " . $e->getMessage() . "<br></br>"

die()

}

//执行删除 *** 作,插入、修改与此类似,更改SQL语句即可

$count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'")

本文实例讲述了php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率。分享给大家供大家参考,具体如下:

<?php

/**

*

测试pdo和mysqli的执行效率

*/

header("Content-type:text/htmlcharset=utf-8")

//通过pdo链接数据库

$pdo_startTime

=

microtime(true)

$pdo

=

new

PDO("mysql:host=localhostdbname=test","root","1234",array(PDO::MYSQL_ATTR_INIT_COMMAND

=>

"SET

NAMES'utf8'"))

for($i=1$i<=100$i++){

$title

=

"pdo标题".$i

$content

=

"pdo内容".$i

$addtime

=

time()

$user_id

=

$i

$pdo_sql

=

"INSERT

INTO

`article`(`title`,`content`,`addtime`,`user_id`)

VALUES(:title,:content,:addtime,:user_id)"

$sth

=

$pdo->prepare($pdo_sql)

$sth->bindParam(':title',$title)

$sth->bindParam(':content',$content)

$sth->bindParam(':addtime',$addtime)

$sth->bindParam(':user_id',$user_id)

$sth->execute()

}

$pdo_endTime

=

microtime(true)

$pdo_time

=

$pdo_endTime

-

$pdo_startTime

echo

$pdo_time

echo

"<hr/>"

//通过mysql链接数据库

$mysqli_startTime

=

microtime(true)

$mysqli

=

mysqli_connect("localhost","root","1234","test")

or

die("数据连接失败")

mysqli_query($mysqli,"set

names

utf8")

for($i=1$i<=100$i++){

$title

=

"mysqli标题".$i

$content

=

"mysqli内容".$i

$addtime

=

time()

$user_id

=

$i

$sql

=

"INSERT

INTO

`article`(`title`,`content`,`addtime`,`user_id`)

VALUES('".$title."','".$content."',".$addtime.",".$user_id.")"

mysqli_query($mysqli,$sql)

}

$mysqli_endTime

=

microtime(true)

$mysqli_time

=

$mysqli_endTime

-

$mysqli_startTime

echo

$mysqli_time

echo

"<hr/>"

if($pdo_time

>

$mysqli_time){

echo

"pdo的执行时间是mysqli的".round($pdo_time/$mysqli_time)."倍"

}else{

echo

"mysqli的执行时间是pdo的".round($mysqli_time/$pdo_time)."倍"

}

测试结果:其实经过多次测试,pdo和mysqli的执行效率差不多。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo *** 作数据库技巧总结》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库 *** 作入门教程》及《php常见数据库 *** 作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例php中数据库连接方式pdo和mysqli对比分析php中关于mysqli和mysql区别的一些知识点分析php *** 作mysqli(示例代码)php封装的mysqli类完整实例PHP以mysqli方式连接类完整代码实例php简单解析mysqli查询结果的方法(2种方法)php中mysql连接方式PDO使用详解Php中用PDO查询Mysql来避免SQL注入风险的方法php

mysql

PDO

查询 *** 作的实例详解PHP实现PDO的mysql数据库 *** 作类


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6153545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存