2013-02-12 45 views
-1

我試圖把INSERT查詢的功能,我想出這些:INSERT查詢

function qry_insert($table, $data, $ignore = false) 
    { 
     $qry = array(); 
     if (is_array($qry) === true) 
     { 
      $qry['query'] = 'INSERT '; 
      if ($ignore === true) 
      { 
       $qry['query'] .= 'IGNORE '; 
      } 

      foreach ($data as $key => $value) 
      { 
       $data[$key] = $key . ' = ' . $value; 
      } 

      $qry['query'] .= 'INTO ' . $table . ' SET ' . implode(', ', $data); 
     } 
     return implode('', $qry); 
} 

我調用這個函數使用此:

$data = array(
    'username'=>'userTest', 
    'email'=>'emailTest', 
    'password'=>'passwordTest' 
); 

qry_insert('users',$data); 

我問題是,我沒有收到錯誤,也沒有插入項目。我嘗試了所有的東西,但我仍然沒有插入任何東西。我的配置和數據庫設置是正確的,因爲在它下面使用該行時它正在工作。

mysql_query("INSERT INTO users (username,..) VALUES ('userTest'...)"); 

什麼似乎是我的錯誤?是否有任何短代碼/功能來做到這一點?

+0

試過'mysql_query(「..」)或死(mysql_error());'? – Rikesh 2013-02-12 10:07:19

+0

請通過echo語句調試您的查詢字符串 – 2013-02-12 10:10:02

+0

引用strings user = userTest - > user ='userTest'。 $ data [$ key] = $ key。 「='」。 mysql_real_escape_string($值)。 「'」; – Waygood 2013-02-12 10:22:23

回答

2

你實際上並沒有插入任何代碼,你仍然需要在調用qry_insert之後做一些mysqli_insert/query。我的猜測是Code Igniter有一些類來處理這個問題。

編輯:

爲例見this post

0

您的函數會生成一個查詢,該查詢不包含圍繞字符串值的引號。它輸出:

INSERT INTO用戶設置用戶名= userTest,電子郵件= emailTest,密碼= passwordTest

正如你所看到的,它缺少周圍userTestemailTestpasswordTest報價,因此,這將導致查詢失敗並出現語法錯誤。另外,您會注意到這是UPDATE樣式語法,而不是INSERT樣式。

使用準備好的語句重新編寫函數並使用正確的INSERT語法代替串聯值會更好。

+0

我試過這個,但它沒有幫助 $ sql ['query']。='INTO'。 $表。 implode(',',$ data); – 2013-02-12 10:18:10

+0

正確的插入語法是INSERT INTO用戶(用戶名,電子郵件,密碼)VALUES('userTest','emailTest','passwordTest')'。您尚未包含列列表或VALUES()容器或引號。 – MrCode 2013-02-12 10:21:41

+0

UPDATE語法適用於MySQL,可用於使用相同的代碼創建插入,更新和選擇查詢 – Waygood 2013-02-12 10:25:47

0

您實際上正在使用此函數調用生成sql查詢,您需要使用mysql_query將數據插入到表中。

2

我定了!

function qry_insert($table, $data){ 

    $fields = array_keys($data); 
    $values = array_map("mysql_real_escape_string", array_values($data)); 
    mysql_query("INSERT INTO $table(".implode(",",$fields).") VALUES ('".implode("','", $values)."');") or die(mysql_error()); 

} 



$data = array(
    'username' => 'userTest', 
    'email'  => 'emailTest', 
    'password' => 'passwordTest' 
); 

$qry = qry_insert('users',$data); 

謝謝你們! :)