<?php
global $wpdb;
global $current_user;
$review_title = isset($_GET['abc'])?$_GET['abc']:'test';
$review_titles = $wpdb->get_results( $wpdb->prepare("SELECT ch_listing.listingId,organizationName, logoUrl, organizationType,reviewId, reviewTitle,reviewDate FROM ch_listing LEFT JOIN ch_review ON ch_listing.listingId = stakeholderId WHERE (reviewTitle LIKE %s);" '%'.like_escape($review_title).'%')));
?>
返回null。我的代码出了什么问题?是否有人可以帮助我如何在wpdb->get_results
wordpress中使用LIKE sql通配符?
答案 0 :(得分:1)
global $wpdb;
global $current_user;
$review_title =isset($_GET['abc'])?$_GET['abc']:'test'; $review_titles = $wpdb->get_results( $wpdb->prepare(
"SELECT
ch_listing.listingId
,organizationName
,logoUrl
,organizationType
,reviewId
,reviewTitle
,reviewDate
FROM
ch_listing
LEFT JOIN
ch_review
ON ch_listing.listingId = stakeholderId
WHERE
(reviewTitle LIKE %s);" '%'.like_escape($review_title).'%')));
很难说明,因为LIKE %s
LIKE '%s'
可能有帮助,LIKE '%%%s%%'
解决此问题的最佳方法是开始讨论大量的代码并查看何时开始获得结果。就像带走WHERE
条款
答案 1 :(得分:0)
这是答案! $ review_title =&#34;示例&#34 ;; $ review_titles = $ wpdb-&gt; get_results($ wpdb-&gt; prepare(&#34; SELECT ch_listing.listingId,organizationName,logoUrl,organizationType,reviewId,reviewTitle,reviewDate FROM ch_listing LEFT JOIN ch_review ON ch_listing.listingId = stakeholderId WHERE reviewTitle喜欢%s&#34;,&#39;%&#39;。$ review_title。&#39;%&#39;));
上面代码中的棘手问题是:$ wpdb-&gt; get_results($ wpdb-&gt; prepare(argument1,argument2))接受两个参数,如argument1和argument2,第一个参数是下一个参考。假设我传递一个字符串,所以我应该使用%s,但如果我想传递参数整数,我应该使用%d,最后变量的值可以是字符串或整数值。
希望对于你们所有人来说都很好的工作是在wordpress中使用LIKE通配符!!!
非常感谢。
答案 2 :(得分:0)
$reviewers_title = $wpdb->get_results( $wpdb->prepare("SELECT chve_users.ID, display_name,userType, reviewId, reviewTitle, reviewDate FROM chve_users RIGHT JOIN ch_review ON chve_users.ID = reviewerId WHERE display_name LIKE %s",'%'.$reviewer_name.'%'));
工作正常