我希望通过将用户ID和日期与帖子进行比较来获取数据(时间)。
以这种形式存储的数据
元键
日期 - 03-01-2017
时间 - 5AM-6AM
userid - 1
现在当我点击一个按钮时,我会得到日期和用户ID。
$(".date").click(function(){
clicked = this;
var dates= $(clicked).closest("ul").find(".getdate").val();
var item= jQuery(this).closest("li.lia");
var date = jQuery(item).find("input.getdate").val();
alert(date);
$.ajax({
type: 'POST', // Adding Post method
url: MyAjax.ajaxurl, // Including ajax file
data: {"action": "date_time", "date":date,
"userid":'<?php echo $uid;?>'}, // Sending data dname to post_word_countfunction.
success: function(data){ // Show returned data using thefunction.
alert(data);
}
});
});
然后我通过ajax将这些数据发送到函数date_time。
function date_time(){
$date = $_POST['date'];
$userid = $_POST['userid'];
global $wpdb;
$sql = "SELECT * FROM $wpdb->postmeta WHERE meta_key = 'date' AND meta_value='$date' AND meta_key = 'userid' AND meta_value='$userid'";
$results = $wpdb->get_results($sql) or die(mysql_error());
print_r($results);
}
这里我匹配用户ID和日期并尝试获取时间,但它在ajax成功函数的警报中显示0。
答案 0 :(得分:0)
尝试元查询而不是自定义查询:
基于它,
$args = array(
'meta_query' => array(
array(
'key' => 'date',
'value' => $date,
'compare' => '='
),
// this array results in no return for both arrays
array(
'key' => 'userid',
'value' => $userid,
'compare' => '='
)
)
);
$the_query = new WP_Query( $args );
答案 1 :(得分:0)
如果我理解了这个问题,你需要在postmeta表上进行自我加入:你需要找到并加入几行来获取你需要的数据。
在此之前,请阅读SQL injection in WordPress - 您的代码容易受到恶意POST
ed值的攻击。</ p>
尝试类似的(未经测试,但它应该给你的想法):
$sql = $wpdb->prepare("
SELECT metatime.meta_value
FROM $wpdb->postmeta metadate
JOIN $wpdb->postmeta metauser on metadate.post_id = metauser.post_id
JOIN $wpdb->postmeta metatime on metadate.post_id = metatime.post_id
WHERE metadate.meta_key = 'date'
AND metauser.meta_key = 'userid'
AND metatime.meta_key = 'time'
AND metadate.meta_value = %s
AND metauser.meta_value = %d",
$date,
$userid);
答案 2 :(得分:0)
在WordPress元数据表中几乎没有什么不同。这里所有元数据都是单独的行。因此,您无法像查询一样查询同一查询中的多个元数据 但你可以这样做。试试这个SQL,我认为它会对你有所帮助。
SELECT m1.meta_key as date,
m1.meta_value as dateval,
m2.meta_key as userid,
m2.meta_value as useridval
FROM `wp_postmeta` as m1
LEFT JOIN wp_postmeta as m2 ON m1.post_id = m2.post_id
WHERE (m1.meta_key ='date' AND m1.meta_value='$date')
and (m2.meta_key = 'userid' AND m2.meta_value='$userid')