编辑:让我重新解释一下这个问题,如何编写数据库查询来说出这样的话...... 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数据库进行交互,这是教程中的地狱阅读教程,但这就是你学习的方法...... / p>
解决方案:我添加了一个新的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();
答案 0 :(得分:0)
看起来你的更新命令并非万无一失,让我们来看看代码。
$wpdb->update("$wpdb->terms", array('slug' => $_POST['y']), array('slug' => 'code-snippet'));
这将发送一个SQL命令,说明“更新slug code-snippet
的记录并将其更改为$_POST['y']
。
所以我们的数据库包含
term_id | name | slug
100 Code Snippet $_POST['y']
您现在可能会看到下次拨打电话时
$wpdb->update("$wpdb->terms", array('slug' => $_POST['y']), array('slug' => 'code-snippet'));
它不会找到slug字段为code-snippet
的记录,它将失败。
我建议您使用term_id
(或任何其他唯一字段)作为更新中的where子句。
答案 1 :(得分:0)
$wpdb->update("$wpdb->terms", array('slug' => $_POST['y']), array('slug' => 'code-snippet'),array( '%s' ),array( '%s' ) );
您可以在此处详细了解更新http://codex.wordpress.org/Class_Reference/wpdb#UPDATE_rows