亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

pdo連接數據庫失敗?為null?

pdo連接數據庫失?。繛閚ull?

unclePig 2016-08-23 10:22:20
這是我的測試代碼部分,不寫成函數,就可以連接,把pdo連接的語句,寫成函數后就連接不了數據庫了。圖是代碼 和瀏覽器打印結果<?php header('content-type:text/html;charset=utf8'); //鏈接數據庫 //1.非函數,成功連接 try{ $dsn='mysql:host=localhost;dbname=cyotel'; $username='root'; $password='root'; $pdo=new?PDO($dsn,$username,$password); //打印連接結果 }catch(PDOException?$e){ echo?$e->getMessage(); } var_dump($pdo); //2.函數,連接失敗 function?connect(){ try{ $dsn='mysql:host=localhost;dbname=cyotel'; $username='root'; $password='root'; $pdo2=new?PDO($dsn,$username,$password); //打印連接結果 }catch(PDOException?$e){ echo?$e->getMessage(); } } connect(); var_dump($pdo2); ?>下面是瀏覽器打印結果1.object(PDO)[1]2.nullphp新手 跪求大神~
查看完整描述

1 回答

已采納
?
揍扁扁了

TA貢獻11條經驗 獲得超4個贊

(1) 變量的作用范圍。在函數中聲明的變量就是局部變量,只能在自己的函數內部使用。將過程式轉變為函數式后,$pdo2就屬于是局部變量了,在函數之外調用,自然沒結果。

(2)函數的返回值概念。函數可以有返回值,用于在函數之外得到函數內的變量。用return 返回 。這樣~~

function?connect(){
try{
$dsn='mysql:host=localhost;dbname=cyotel';
$username='root';
$password='root';
$pdo2?=?new?PDO($dsn,$username,$password);
return?$pdo2;
//打印連接結果
}catch(PDOException?$e){
echo?$e->getMessage();
}
}
$pdo?=?connect();
var_dump($pdo);

(3) 我也是個新手,一起努力呀~~

查看完整回答
1 反對 回復 2016-08-23
  • unclePig
    unclePig
    把$pdo設為全局變量也可以,,,哪個好點?
  • 揍扁扁了
    揍扁扁了
    如果因為作用域聲明全局變量那會導致越來越多的全局變量,維護啊什么的都不方便,但是主要還是覺得沒什么必要吧,畢竟函數內的結果大部分不會在全局用到。不過像這種pdo資源類型的數據,可以用一個單例模式來設計一下,我也是在慕課網上看到的這個課程,因為這樣可以避免大量的new操作,節省資源。
  • 揍扁扁了
    揍扁扁了
    如果因為作用域聲明全局變量那會導致越來越多的全局變量,維護啊什么的都不方便,但是主要還是覺得沒什么必要吧,畢竟函數內的結果大部分不會在全局用到。不過像這種pdo資源類型的數據,可以用一個單例模式來設計一下,我也是在慕課網上看到的這個課程,因為這樣可以避免大量的new操作,節省資源。
點擊展開后面1
  • 1 回答
  • 0 關注
  • 2128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號