到目前为止,我有一个PHP构造函数的类
public function __construct ($identifier = NULL)
{
// Return me.
if ( $identifier != NULL )
{
$this->emailAddress = $identifier;
if ($this->loadUser() )
return $this;
else
{
// registered user requested , but not found !
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
功能loadUser是查找特定电子邮件地址的数据库.当我将标识符设置为某些电子邮件时,我确定它不在数据库中; 第一个IF被传递,然后进入第一个ELSE.这里构造函数应该返回FALSE; 但相反,它返回具有所有NULL值的类的对象!
我该如何防止这种情况?谢谢
编辑:
谢谢大家的答案.那很快!我看到OOP方式是抛出异常.所以抛出一个,我的问题改变了我应该怎么做的例外?php.net的手册非常令人困惑!
// Setup the user ( we assume he is a user first. referees, admins are considered users too )
try { $him = new user ($_emailAddress);
} catch (Exception …Run Code Online (Sandbox Code Playgroud) 我有几个类执行一些MySQL查询和准备语句.但是,我迷失在如何将PDO对象合并到这些类中.例如,我想做这样的事情:
<?php
$dbh = new PDO(...);
class Foo extends PDO {
public $dbh;
public function bar() {
$this->dbh->prepare('SELECT * FROM table');
$this->dbh->execute();
}
}
?>
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不起作用.谁能建议一个优雅的方式来做到这一点?谢谢你的时间.对不起,我是新手,如果你不清楚,请留下任何评论,我会尽力回复!
您好,我是 MYSQL 的 PDO 新手,这是我的两个文件 1) index.php
require_once 'prd.php';
try{
$db = new PDO ('mysql:host=xxxx;dbname=xxx;charset=utf8', 'xxx', 'xxxx');
echo 'connectd';
}catch(PDOException $conError){
echo 'failed to connect DB' . $conError->getMessage ();
}
$conn = new prdinfo();
$conn->con($db);
Run Code Online (Sandbox Code Playgroud)
2) 产品.php
class prdinfo{function con($db){
try{
foreach($db->query("select * from products where vendor_id = 2" ) as $row){
$prod_id = $row ['product_id'];
echo '<br/>' . $prod_id;
}
}catch(PDOException $ex){
echo 'an error occured' . $ex->getMessage();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是在这里我可以将连接对象传递给每个文件,但是我有很多文件要使用数据库查询,所以我需要将 $bd 传递给所有文件。这给代码带来了负担。那么有什么方法可以将数据库与 PDO 连接起来。 谢谢