
mysql返回修改后的列_PDO Mysql驱动返回结果的列类型问题
使用statement->getColumnMeta得到的列元信息,其中的pdo_type也表明是字符串。
php可以自动处理类型转换,比如整型和字符串,但是对于其他环境,比如传给其他平台(如flash),就要在其中一端进行类型转换,或者在协议中处理。另外,要基于查询结果的元信息构建自动化的数据处理,比如ORM,也就不方便了。
原因是,mysql驱动使用mysql_fetch_row函数取得结果集,它是个字符串数组,即所有列都是字符串方式的存储,并且没根据DB存储的类型进行转换,相应地,列的元数据也就都是字符串类型了;
另外,pdo本身的数据类型也有限,跟DB、DB客户端库函数的数据类型有差异,比如pdo没有浮点数类型。
根据pdo接口规范,只要修改mysql驱动中的两个回调函数就可以了:
<php
$sql = "select from gd_article";
$username = "username";
$password = "password";
$pdo = new PDO("mysql:host=hostname;dbname=defaultDBName", $username, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES gbk") );
$stmt = $pdo->prepare($sql);
$stmtexecute($sql);
$rowcount = $stmt->rowCount();
>
PHP 版本 <= 52 的常用连接方法为
$link = mysql_connect('mysql地址/localhost','root','root密码');mysql_select_db('db1'); //选择一个数据库
mysql_query('set names utf8'); // 设置下数据库默认编码,避免写入/读取乱码
$res = mysql_query('select from user'); // 执行sql 语句
$rows = array();
while($row = mysql_fetch_array($res)){
$rows[] = $row; // 循环 resouce 数据得到数组数据集合
}
print_r($rows); // 最后一步输出数据列表
PHP 版本 >= 53 的常用连接方法为PDO形式,当然也可以使用52的连接方法。(PDO需开启 php_pdo_mysql 扩展)
$pdo = new PDO('mysql:host=地址/localhost;dbname=数据库名','root','root密码');$pdo->exec('set names utf8');
$res = $pdo->query('select from user');
$rows = array();
while($row = $res->fetch()){
$rows[] = $row;
}
print_r($rows);
大家学习php途中,建议使用53 版本以上以获得更好的php编程体验。
所以推荐pdo形式连接数据库,更安全快速。
本扩展自
PHP
550
起已废弃,并在将来会被移除。应使用
MySQLi
或
PDO_MySQL
扩展来替换之。参见
MySQL:选择
API
指南以及相关
FAQ
以获取更多信息。用以替代本函数的有:
mysqli_affected_rows()
PDOStatement::rowCount()
说明
int
mysql_affected_rows
([
resource
$link_identifier
=
NULL
]
)
取得最近一次与
link_identifier
关联的
INSERT,UPDATE
或
DELETE
查询所影响的记录行数。
参数
link_identifier
MySQL
连接。如不指定连接标识,则使用由
mysql_connect()
最近打开的连接。如果没有找到该连接,会尝试不带参数调用
mysql_connect()
来创建。如没有找到连接或无法建立连接,则会生成
E_WARNING
级别的错误。
返回值
执行成功则返回受影响的行的数目,如果最近一次查询失败的话,函数返回
-1。
如果最近一次 *** 作是没有任何条件(WHERE)的
DELETE
查询,在表中所有的记录都会被删除,但本函数返回值在
412
版之前都为
0。
当使用
UPDATE
查询,MySQL
不会将原值和新值一样的列更新。这样使得
mysql_affected_rows()
函数返回值不一定就是查询条件所符合的记录数,只有真正被修改的记录数才会被返回。
REPLACE
语句首先删除具有相同主键的记录,然后插入一个新记录。本函数返回的是被删除的记录数加上被插入的记录数。
"INSERT
ON
DUPLICATE
KEY
UPDATE"
这种情况的查询,当执行了一次
INSERT
返回的值会是
1;如果是对已经存在的记录执行一次
UPDATE
将返回
2。
以上就是关于mysql返回修改后全部的内容,包括:mysql返回修改后、php pdo 返回查询数据量、PHP如何读取MYSQL数据库的字段内容然后返回该行所有内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)