好吧,這會有點複雜。用PHP mysqli做靈活的「INSERT INTO」查詢的方法?
但現在我正在使用一個家庭函數來創建一個查詢插入一個頁面到數據庫。
我想知道是否有一個更靈活的方法來實現靈活的「插入」方法。
問題是,我有一些字段是可選的在創建頁面時輸入,所以現在我正在使用這個地方,我正在運行所有字段並檢查它們是否設置。 :
//creates an Array which can be used to make a MySQL query
function createQueryArray($new) {
if (isset($this->users_id))
$this->query_array['users_id'] = mysql_real_escape_string($this->users_id);
if (isset($this->pagename))
$this->query_array['pagename'] = mysql_real_escape_string($this->pagename);
if (isset($this->seo_pagetitle))
$this->query_array['seo_pagetitle'] = mysql_real_escape_string($this->seo_pagetitle);
if (isset($this->seo_description))
$this->query_array['seo_description'] = mysql_real_escape_string($this->seo_description);
if (isset($this->seo_keywords))
$this->query_array['seo_keywords'] = mysql_real_escape_string($this->seo_keywords);
if (isset($this->seo_robots))
$this->query_array['seo_robots'] = mysql_real_escape_string($this->seo_robots);
if (isset($this->seo_canonical))
$this->query_array['seo_canonical'] = mysql_real_escape_string($this->seo_canonical);
if (isset($this->type))
$this->query_array['page_type'] = mysql_real_escape_string($this->type);
//$this->query_array['last_edited'] = date("Y-m-d H:i:s");
}
後來我打電話與陣列和表我想在頁面中插入到這個功能:
function createInsertStm($arr, $table) {
$mysqlQuery = ("INSERT INTO $table (");
$insert = "";
$values = "";
if (is_array($arr))
foreach ($arr as $key => $value) {
if ($insert == "")
$insert .= $key;
else
$insert .= ', ' . $key;
if ($values == "")
$values .= (preg_match('/(MAX\(id\))(.*?)/', $value)) ? $value : '"' . $value . '"';
else
$values .= (preg_match('/(MAX\(id\))(.*?)/', $value)) ? "," . $value : ',"' . $value . '"';
}
$mysqlQuery .= $insert;
$mysqlQuery .= ') VALUES (';
$mysqlQuery .= $values;
$mysqlQuery .= ')';
return $mysqlQuery;
}
$db->query($queryArray["pages"]);
它是更多鈔票使用事先準備好的聲明,然後就跳過某些字段或類似的東西?
看看ORM工具,與ORM,你可以專注於你的數據結構,而不是他們的保存方式。我愛學說ORM – slash28cu
昨天我正在讀到教條2的api。這聽起來很酷。但是我認爲將它應用到我的小CMS系統是不值得的,因爲它只有一個它想要存儲到數據庫中的對象。 –