Php 让PDO::fetch(PDO::fetch_类)返回对象的空值实例,而不是bool(false)
我的用户通过web界面管理公司的客户。他们可以使用(除其他方式外)输入导航到客户机,以直接选择客户机id,该id将向他们显示客户机条目 为此,我使用PDO::FETCH_类映射php对象中的数据库值。然后使用这些对象生成html;所述html将作为客户端id显示在屏幕上Php 让PDO::fetch(PDO::fetch_类)返回对象的空值实例,而不是bool(false),php,oop,pdo,Php,Oop,Pdo,我的用户通过web界面管理公司的客户。他们可以使用(除其他方式外)输入导航到客户机,以直接选择客户机id,该id将向他们显示客户机条目 为此,我使用PDO::FETCH_类映射php对象中的数据库值。然后使用这些对象生成html;所述html将作为客户端id显示在屏幕上 $oSTMT = $oDB->prepare("SELECT id,name FROM clients WHERE id=?"); $oSTMT->setFetchMode(PDO::FETCH_CLASS,'cli
$oSTMT = $oDB->prepare("SELECT id,name FROM clients WHERE id=?");
$oSTMT->setFetchMode(PDO::FETCH_CLASS,'client');
$oSTMT->execute(array(12673));
$oClient = $oSTMT->fetch(); // returns false when no row is selected
$oClient->makeHTML(); // which resultd in Fatal error: Call to a member function on a non-object
在重新设计让一个对象包装所获取的对象以便它在布尔值时不会中断之前,我会尝试让PDO生成一个实例对象
我的问题有两个:在输入中输入一个不存在的客户机id和创建一个新客户机。在这两种情况下,客户机id均未引用数据库中的任何行execute(数组([values])
将返回bool(true)
(成功执行的语句),但是->fetch(PDO::fetch_类,'client')
将返回bool(false)
我的解决方案是创建一个id=0的客户机行,这样当它不存在时,我就用id=0进行查询以获得我的“默认”客户机行,但我想知道:
当语句未选择任何行时,是否有命令指示PDO::FETCH_CLASS
生成所选对象的实例?
这还可以避免我必须首先验证id是否存在(我承认这不是很昂贵,但我不想非得这么做)首先实例化类,然后使用
FETCH\u INTO
而不是FETCH\u class
$client = new client();
$oSTMT = $oDB->prepare("SELECT id,name FROM clients WHERE id=?");
$oSTMT->setFetchMode(PDO::FETCH_INTO,$client);
$oSTMT->execute(array(12673));
$client = $oSTMT->fetch();
$client->makeHTML();
首先实例化类,然后使用
FETCH\u INTO
而不是FETCH\u class
$client = new client();
$oSTMT = $oDB->prepare("SELECT id,name FROM clients WHERE id=?");
$oSTMT->setFetchMode(PDO::FETCH_INTO,$client);
$oSTMT->execute(array(12673));
$client = $oSTMT->fetch();
$client->makeHTML();
您可以先手动创建类实例,然后使用
FETCH\u进入
模式,而不是FETCH\u类
。这样,即使结果为false,该类仍然存在,默认值如类中所述。听起来不错,您可以先手动创建类实例,然后在中使用FETCH\u进入
模式而不是FETCH\u CLASS
。这样,即使结果为false,该类仍将存在,并具有类中所述的默认值。听起来不错