-1
我正在爲PHP PDO編寫一個類,以便縮短準備和執行方法。PDO類和個人類,如何多次設置方法
不必編寫一個準備,結合每一次的:
$db = new PDO('sqlite:db.sdb');
$prep = $db->prepare("INSERT INTO animals (animal_type, animal_name) VALUES (:animal_type, :animal_name)");
$data_to_set = array(':animal_type' => 'Cow', ':animal_name' => 'Carolina');
$prep->execute($data_to_set);
在這種情況下animal_type和animal_name得到重複,所以我創建這個削減了一個類:
class QuickPDO{
public $fields, $values, $args;
public function __construct($args){
foreach ($args as $key => $value) {
$this->fields .= substr($key, 1).', ';
$this->values .= $key.", ";
}
$this->values= substr($this->values, 0, -2);
$this->fields = substr($this->fields, 0, -2);
$this->args = $args;
}
public function insert($table){
$returning_query = "INSERT INTO $table ($this->fields) VALUES ($this->values)";
return $returning_query;
}
}
因此,這變得更容易,並變成:
$myPDO = new QuickPDO([':animal_type' => 'Cow', ':animal_name' => 'Carolina']);
$prep = $db->prepare($myPDO->insert('animals'));
$prep->execute($myPDO->args);
到這裏,沒問題。不過這樣一來,我只能做一個對每個QuickPDO對象,這是不是很方便準備,所以我想改變__construct成功能「設置」:
public function set($args){
foreach ($args as $key => $value) {
$this->fields .= substr($key, 1).', ';
$this->values .= $key.", ";
}
$this->values= substr($this->values, 0, -2);
$this->fields = substr($this->fields, 0, -2);
$this->args = $args;
}
,並調用它是這樣的:
$myPDO = new QuickPDO();
$myPDO->set([':animal_type' => 'Cow', ':animal_name' => 'Carolina']);
$prep = $db->prepare($myPDO->insert('animals'));
$prep->execute($myPDO->args);
問題出現在我嘗試做一個新的set()到$ myPDO。我做錯了什麼,但我無法弄清楚它是什麼。
聽起來太麻煩只是爲了添加一行2列的表。 – silkfire
@silkfire你是什麼意思?我不明白,這是一個測試2列,但可以擴大。正如我寫的「我在寫課程」一樣,這是爲了將來的使用。爲什麼是-1? –
「不必每次都編寫一個準備和綁定」。那有什麼麻煩的?你只准備一次,然後多次執行。這可以通過交易加快。 – silkfire