我總是擴展PDO並添加一些我自己的方便的東西。所以首先你要這樣擴展:
<?php
//Database class
class db extends Pdo{
public function __construct(){
global $conf;
try
{
parent::__construct('DBTYPE:dbname=DBNAME;host=DBHOST', 'DBUSER', 'DBPASS');
$this->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
throw new myPdoException($e);
}
}
public function quest($queryString){
try
{
$query = $this->query($queryString);
return $query;
}
catch(PDOException $e){
throw new myPdoException($e);
}
}
public function doPrepare($queryString, $param){
try
{
$query = $this->prepare($queryString);
$query->execute($param);
return $query;
}
catch(PDOException $e)
{
throw new myPdoException($e);
}
}
public function doPrepareBind($queryString, $param){
try
{
$query = $this->prepare($queryString);
foreach($param as $par){
switch($par[2]):
case 'int':
$query->bindParam($par[0], $par[1], PDO::PARAM_INT);
break;
case 'str':
$query->bindParam($par[0], $par[1], PDO::PARAM_STR);
break;
case 'blob':
$query->bindParam($par[0], $par[1], PDO::PARAM_LOB);
break;
default:
$query->bindParam($par[0], $par[1], PDO::PARAM_STR);
break;
endswitch;
}
$query->execute();
return $query;
}
catch(PDOException $e)
{
throw new myPdoException($e);
}
}
}
class myPdoException extends PdoException{
private $_debug = DB_DEBUG;
public function __construct($e){
parent::__construct($e);
$this->showException();
}
private function showException(){
if($this->_debug){
echo
"<div id='transparant'><div id='error'><br /><br />" .
$this->message
. "<br /><br /><br /></div></div>";
}
else{
echo "<div id='transparant'><div id='error'><br /><br />
Er is iets mis gegaan, probeer later nog eens.<br />Sorry voor het ongemak.
<br /><br /><br /></div></div>";
}
}
}
?>
你在第9行看到一個父構造函數。你必須添加你的db信息來代替大寫字母。
請注意,DBTYPE是您正在使用的數據庫服務的類型。可能它只是mysql。
現在,這是消毒一系列字符串時,我如何使用這樣的:
//first include db class I made above.
$db = new db();
$query = "INSERT INTO `database`.`users` (`id`, `naam`, `email`, `pass`, `key`, `status`) VALUES (NULL, :name, :mail, :pass, '$key', '0')";
$param = array(
array(':name', $_POST['name']),
array(':mail', $_POST['mail']),
array(':pass', $pass_hash)
);
$query = $db->doPrepareBind($query, $param);
只要執行'$ getRecords-> bindValue(':sort',DESC,PDO :: PARAM_STR);'? – 2013-04-05 06:56:45
綁定僅適用於「參數」,它不能用於「構造」SQL查詢。 – Passerby 2013-04-05 06:59:08
當給予:'key'時,你不能使用'':'key'就是這樣做的:'key'。綁定函數會爲你提供這樣的照顧。 – botenvouwer 2013-04-05 07:34:07