php
  • mysql
  • copy
  • row
  • 2012-10-11 101 views 0 likes 
    0

    我有一個預建的電子郵件模板表。用戶可以看到他們已經構建的模板的表格,並且可以編輯或刪除它們。我正在構建一個功能,將「複製」添加到他們的選項中。在模板被複制並複製之後,它們將以編輯器的重複值結束,並且該行的id會自動遞增。複製並複製mysql行,php

    我一直試圖讓這個查詢工作:

    if ((isset($_GET['id'])) && ($_GET['id'] != "") && ($_GET['cmd'] = 'copyTemplate')) { 
    
    $replicate = mysql_query("SELECT id, name, subject, markup FROM email_templates WHERE id=$old_id;"); 
    $original_record = mysql_fetch_assoc($replicate); 
    
    //insert new template 
    $query = "INSERT INTO email_templates (name, subject, markup) VALUES ('".$original_record['name']."','".$original_record['subject']."','".$original_record['markup']."');"; 
    mysql_query($query); 
    $newid = mysql_insert_id(); 
    
    //release results from memory 
    mysql_free_result($original_record); 
    
    //Hop into edit mode for new template 
    header("Location: communications_templatebuilder.php?id=" . $newid); 
    } 
    

    當我使用'id=%s'代替'id=$old_id'我在DB與自動遞增的ID和一個新行的編輯結束,但列值是空的。

    我錯過了什麼。

    +2

    你可能要考慮的'INSERT INTO ... SELECT'語句將2個查詢合併爲1:http://dev.mysql.com/doc/ refman/5.0/en/insert-select.html – Oldskool

    +1

    Duplicate:http://stackoverflow.com/questions/4039748/how-do-i-copy-one-row-to-insert-into-the-same-table? rq = 1 – Jocelyn

    +1

    請不要使用'mysql_ *'函數來編寫新代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。查看[*紅色框*](http://goo.gl/GPmFd)?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 –

    回答

    -2

    在這裏,您將獲得原始表的所有記錄,並逐個將所有註冊表插入到新表中。

    你好三本:

    $replicate = mysql_query("SELECT id, name, subject, markup FROM email_templates"); 
    $original_record = mysql_fetch_assoc($replicate); 
    
    while($original_record = mysql_fetch_array($replicate)){ 
        $query = "INSERT INTO email_templates (name, subject, markup) VALUES ('".$original_record['name']."','".$original_record['subject']."','".$original_record['markup']."');"; 
        mysql_query($query); 
    } 
    
    //release results from memory 
    mysql_free_result($original_record); 
    
    +0

    非常非常糟糕的建議。首先,這對SQL注入來說很脆弱。其次,你可以用'只'一個查詢來做到這一點。 –

    相關問題