我有以下声明。
print_r("Execution Success ")
class Db{
private static $_instance = null;
private $_conn, $_qry, $_error = false;
private function __construct(){
try{
$this->_conn = new PDO("mysql:host=127.0.0.1;dbName=online_shop", "root", "");
//echo "Conected to Db <br/>";
}catch(PDOException $e){
die($e->getMessage());
}
}
public static function getInstance(){
if(!isset(self::$_instance)){
return self::$_instance = new Db();
}
return self::$_instance;
}
public function query($sql, $params = array()){
$this->_error = false;
if($this->_qry = $this->_conn->prepare($sql)){
$x = 1;
if(count($params)){
foreach($params as $param){
$this->_qry->bindValue($x, $param);
$x++;
}
}
if($this->_qry->execute(){
foreach($this->_qry->fetchAll() as $row){
print_r("Execution Success ");
}}
}
}
}
echo Db::getInstance()->query("SELECT name FROM products WHERE id = ?", array(1));
似乎根本没有将错误重新路由为NULL,因为我仍在接收异常。
该变量无效,因为该值无效 CINPUT变量的值。
我想忽略异常,在这种情况下我不知道如何使用$CINPUT = $CINPUT.ToUpper() -replace '(^\s+|\s+$)','' -replace '\s+',' ' 2> $NULL
注意:我知道它并且可以使用,但是我不想将2> $NULL
用作脚本的全局设置。
答案 0 :(得分:1)
2> $NULL
只能抑制写入到 PowerShell错误流的错误。
相比之下,您的语句会导致 .NET异常,该异常表现为PowerShell中的语句终止错误,您可以使用try
/ catch
:
try {
$CINPUT = $CINPUT.ToUpper() -replace '(^\s+|\s+$)','' -replace '\s+',' '
} catch {} # ignore the statement-terminating error
通常,仅当命令仅产生非终止错误时,错误流2>
的重定向才会成功。