编辑:让我重新表述这个问题,我如何编写数据库查询来说出这样的话..PUT $_POST['y'] WHERE column is 'slug' and term_id = 100
显然不是正确的 sql 语法..但我认为这样的事情会满足我的需要?正确的..
我试图更新我的数据库中的一个项目,在每次更改时使用动态变量的值(意味着变量经常更改)我不想添加新行(这就是正在做的事情)而是我想保留那个行并更新一部分...
global $wpdb;
一些变量,这些东西进入我的数据表
//The data here comes from an ajax call
$_POST['y'];
$term_id = 100;
$name = 'Code Snippet';
$slug = 'code-snippet';
一个变量来设置我将插入数据的列...
//Im adding into wp_terms a default table (for testing)...
$query = "INSERT INTO $wpdb->terms (term_id, name, slug) VALUES (%d, %s, %s)";
我取$query
变量并用上面声明的变量填充表格
//Here I insert the data into the columns
$wpdb->query($wpdb->prepare($query, $term_id, $name, $slug));
我可以用我的动态值 $_POST['y'] 更新我们声明为 'code-snippet' 的 slug 列,但只能更新一次……如何继续更新它?
//Here is where I struggle..
$wpdb->update("$wpdb->terms", array('slug' => $_POST['y']), array('slug' => 'code-snippet'));
die();
更新添加的 AJAX 代码以防万一......(它工作正常......我只是专注于在进行新的 ajax 调用时更新一行......我可以在进行 ajax 调用时创建一个新行......只是不知道如何查询它,以便它替换旧的 ajax 值)
$( ".silly-string" ).draggable({
containment: '#_moon_static_bg_status',
stop: function(event, ui) {
var pos_x = ui.position.left;
var pos_y = ui.position.top;
jQuery.ajax({
type: "POST",
url: window.ajaxurl,
data: { "action": "myAjax", x: pos_x, y: pos_y }}).done(function( msg ) {
$('.silly-string').text( "Data Saved: " + msg );
});
}
});
更新:
http://i.stack.imgur.com/agL0U.jpg
您可以从图像中看到648
以前的位置,'code-snippet'
但是当数字更改为说它723
没有更新时..显然是因为我们告诉它更新'code-snippet'
我试图弄清楚如何编写它以使其与我的匹配需要..
更新:我希望这可以显示我想要实现的简单性
http://i.stack.imgur.com/pxeo1.jpg
已解决:感谢@Matt Cooper,我能够意识到这是多么容易,现在我可以做我想做的事了。我还在这个过程中学到了一些东西,我可以在未来使用,我现在拥有更多的编码能力,知道如何与 wordpress 数据库交互,这是一个又一个教程的地狱阅读教程,但这就是你学习的方式......
解决方案:我添加了一个新的 ajax 变量,它返回可拖动元素的 ID。var divid = ui.helper.attr("id");
(必须确保给元素一个 ID)这是完整的代码。
AJAX:我添加了一个新变量var divid = ui.helper.attr("id");
并将其添加到要传递的数据中
$( ".silly-string" ).draggable({
containment: '#_moon_static_bg_status',
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 }})
}
});
PHP:
//The data here comes from an ajax call
$_POST['y'];
$_POST['id'];
$term_id = 100;
$name = $_POST['id'];
$slug = $_POST['y'];
//Im adding into wp_terms a default table (for testing)...
$query = "INSERT INTO $wpdb->terms (term_id, name, slug) VALUES (%s, %s, %s)";
//Here I insert the ajax data into the columns
$wpdb->query($wpdb->prepare($query, $term_id, $name, $slug));
//$wpdb->update("$wpdb->terms", array('slug' => $_POST['y']), array('post_id' => $_POST['id']));
$wpdb->update("$wpdb->terms", array('slug' => $_POST['y']), array('name' => $_POST['id']));
$last_title = $wpdb->get_col("SELECT term_id FROM $wpdb->terms WHERE name = 'Code Snippet' ");
echo $last_title[3];
die();