在数据库中添加和更新行

时间:2013-07-17 04:25:15

标签: php database

我将jQuery UI中的一些数据存储到数据库中....

$( ".MYELEMENT" ).draggable({  
    stop: function(event, ui) {
        var pos_x = ui.position.left;
        var pos_y = ui.position.top;
        var divid = ui.helper.attr("id");

        jQuery.ajax({
            type: "POST",
            url: window.ajaxurl,
            data: { "action": "myAjax", id: divid, x: pos_x, y: pos_y }})
            .done(function( msg ) {
        });
    }  
});

注意那些变量,我把它们传递给我的脚本..

function myAjax() { 
    global $wpdb;

    // The data here comes from an ajax call
    $term_id = 100;
    $name = $_POST['id']; 
    $slug = $_POST['x'];
    $term_group = $_POST['y']; 

    // I'm adding into wp_terms a default table (for testing)... 
    $query = "INSERT INTO $wpdb->terms (term_id, name, slug, term_group)
              VALUES (%s, %s, %s, %s)"; 

    // Here I insert the ajax data into the columns 
    $wpdb->query($wpdb->prepare($query, $term_id, $name, $slug, $term_group));
    $wpdb->update("$wpdb->terms", 
                   array('slug' => $_POST['x'], 'term_group' => $_POST['y']),
                   array('name' => $_POST['id']));
    die();
}

$_POST['id'];是此HTML元素的ID ...

<div class="MYELEMENT draggable" id="element"></div>

此ID存储在上面的$name变量中..

我的表格似乎是

|term_id|   |name|      |slug|      |term_group|
|100|     |element| |X Value here| |Y value here|

您在更新功能中看到我定位slugterm_group并使用ajax值更新它们WHERE名称为$_POST['id']&lt; ---这是{{ 1}}在我的桌子里..一切都很好......但是

如果我有新的element怎么办?

$_POST['id']

ID更改并将传递到我的ajax值,如何创建新行并继续更新行X和Y值?我将继续不断添加新元素..

<div class="MYELEMENT draggable" id="element2"></div>// notice the ID changes

每个div应该有自己的行..这在我手动更改<div class="MYELEMENT draggable" id="element3"></div> <div class="MYELEMENT draggable" id="element4"></div> 时有用,例如当我拖动$term_id = 100;时,它会像上面那样存储到数据库中

<div class="MYELEMENT draggable" id="element"></div>

但是,当我将|term_id| |name| |slug| |term_group| |100| |element| |X Value here| |Y value here| 更改为$term_id = 100;并拖动$term_id = 101;时,上面的行会粘贴...并创建一个新行

<div class="MYELEMENT draggable" id="element2"></div>

这是我想要实现的目标,但我不想手动更改|term_id| |name| |slug| |term_group| |101| |element2| |X Value here| |Y value here|

这有意义吗?

确定解决方案我最后使用了一点逻辑并决定提供身份证号码。

$term_id = 101;

然后我像这样运行我的更新

     echo '<div class="MYELEMENT draggable" id="100"style="left: '.$x.'px; top: '.$y.'px;"></div>';

                echo '<div class="MYELEMENT draggable" id="102"style="left: '.$x.'px; top: '.$y.'px;"></div>';

                echo '<div class="MYELEMENT draggable" id="103"style="left: '.$x.'px; top: '.$y.'px;"></div>';

1 个答案:

答案 0 :(得分:0)

您必须在SQL查询的{}附近的双引号内使用$wpdb->terms,以使其成为variable_name。

$query = "INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES (%s, %s, %s, %s)";