当前位置: 代码迷 >> 综合 >> mysql php pdo query print_r global echo
  详细解决方案

mysql php pdo query print_r global echo

热度:37   发布时间:2024-01-21 08:58:10.0

实验目的

mysqli语句切换到pdo语句

注意php5.6间相近版本可以mysqli和pdo混用,php7之后抛弃了mysqli,只有pdo

调用数据库有一个基本的检查,即,数据库是否打开,然后才有query语句,

$dbh=new PDO("mysql:host=".$DB_HOST.';dbname='.$DB_NAME, $DB_USER, $DB_PASS,array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));

在这样的语句中,我多次想检查$dbh的返回值,用echo就停止,后来换成print_r 语句输出 成PDO Object ( ) ,同时也发现只有if语句如if(!$dbh)等类似的用法,

print_r语句很好,可以打印任何类型的数据,即使不能打印也会用友好的方式告诉你结果。echo直接错误退出了。

global $DB_HOST,$DB_NAME,$DB_USER,$DB_PASS,$dbh; global的用法颠覆了我的全局变量定义的理解,神奇,她帮着我检验了mysqli和pdo的必须变量的关系。

require_once的操作不是太理解,包含进来文件后,执行就结束了,比如变量就变成了无关的,echo都是空值,global后才会出现原值。

这样处理连接更好

<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>

这样关闭

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// 在此使用连接


// 现在运行完成,在此关闭连接
$dbh = null;
?>

持久化连接,一般不建议

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
?>




至此,基本可以把mysqli用pdo互换,等有空研究吧

参考 https://www.runoob.com/php/php-pdo.html

        http://php.net/manual/zh/book.pdo.php


  相关解决方案