下面是其他人寫的PHP數據庫類的一部分,我已經刪除了它的80%左右的代碼,所有與我的問題無關的代碼已被刪除,只剩下數量可以讓我無需真正測試這個類打到真正的數據庫。這個PHP如何知道使用哪個數組鍵/值?
這個類有幾個方法可以讓你設置一個鍵值,然後把它變成一個使用數組的mysql UPDATE和INSERT sql查詢。我想弄清楚如何使用這個代碼100%,所以我可以在我自己的應用程序中使用它的UPDATE和INSERTS的這個特性。
Basicly從我收集你做這樣的事......
// assign some key/values to insert into DB
$db->assign('name', 'dfgd');
$db->assign('age', 87);
$db->assign('sex', 'female');
$db->assign('user_id', 4556);
// Do the insert
$db->insert('testing2');
現在,我很困惑是我能繼續這樣一遍又一遍地在頁面上運行的代碼,它總是會使用正確的鍵/值數組集。上面可以看到我使用的分配()方法4次,然後叫我辦另一組這樣在同一頁面上創建此
INSERT INTO test (name, age, sex, user_id) VALUES (jason davis, 26, male, 5345)
現在insert()方法...
// assign some key/values to insert into DB
$db->assign('name', 'dfgd');
$db->assign('age', 87);
$db->assign('sex', 'female');
$db->assign('user_id', 4556);
// Do the insert
$db->insert('testing2');
然後創建這個...
INSERT INTO testing2 (name, age, sex, user_id) VALUES (dfgd, 87, female, 4556)
那麼它如何不組合的4 2臺,所以不是在第二插入插入8條,它completey替換第一組4個值新的設置。這是偉大的,我想要但我不明白它是如何發生的?無論如何,這也可以改善嗎?
下面是一個完整的類和我的演示代碼,它可以在不需要連接到此演示的mysql時運行,它將打印以屏蔽它構建的SQL。
此外,公用函數reset()需要在下面的代碼中使用,還是不需要?
<?php
class DB{
public $fields;
public function assign($field, $value){
$this->fields[$field] = ($value)==""?("'".$value."'"):$value;
}
public function assign_str($field, $value){
$this->fields[$field] = "'".addslashes($value)."'";
}
public function reset(){
$this->fields = array();
}
public function insert($table){
$f = "";
$v = "";
reset($this->fields);
foreach($this->fields as $field=>$value){
$f.= ($f!=""?", ":"").$field;
$v.= ($v!=""?", ":"").$value;
}
$sql = "INSERT INTO ".$table." (".$f.") VALUES (".$v.")";
//print SQL to screen for testing
echo $sql;
//$this->query($sql);
return $this->insert_id();
}
public function update($table, $where){
$f = "";
reset($this->fields);
foreach($this->fields as $field=>$value){
$f.= ($f!=""?", ":"").$field." = ".$value;
}
$sql = "UPDATE ".$table." SET ".$f." ".$where;
echo $sql;
//$this->query($sql);
}
public function query($_query){
$this->query = $_query;
$this->result = @mysql_query($_query, $this->link_id) or die($_query."<p>".mysql_error($this->link_id));
return $this->result;
}
public function insert_id(){
return @mysql_insert_id($this->link_id);
}
}
// start new DB object
$db = new DB;
// assign some key/values to insert into DB
$db->assign('name', 'jason davis');
$db->assign('age', 26);
$db->assign('sex', 'male');
$db->assign('user_id', 5345);
// Do the insert
$db->insert('test');
echo '<hr />';
// assign some key/values to insert into DB
$db->assign('name', 'dfgd');
$db->assign('age', 87);
$db->assign('sex', 'female');
$db->assign('user_id', 4556);
// Do the insert
$db->insert('testing2');
echo '<hr />';
// assign some key/values to UPDATE the DB
$db->assign('name', 'jason davis');
$db->assign('age', 26);
$db->assign('sex', 'male');
$db->assign('user_id', 5345);
// DO the DB UPDATE
$db->update('blogs', 'WHERE user_id = 23');
?>
在太多人不斷爭論這個問題的「含義」之前,你可能想要接受一個答案。 – 2010-01-18 03:09:25
答案是42! xP – 2010-01-18 03:11:25
我的代表恰好是7777。至少它低了1,111。 – 2010-01-18 03:13:18