我有搜索数据库的查询,即
$linkcdb = $wpdb->query($wpdb->prepare("SELECT wp_link_factor WHERE wp_link_chk = %s", $u));
哪里$u = is nay link;
例如;
$u = www.kaka.com
$u = popopo.com
$u = http://jajaja.com
我有一个数据库,其中www, http and .com
在表的列中,列名是wp_link_chk
现在我面临的问题是用户输入是一个完整的链接,就像www.example.com
在数据库中我只有.com, http and www
想要的是我如何比较我的完整句子,看看句子中是否有针 http,或 www 或 .com?
执行此操作的功能是stristr($u,'http')
所以我将如何在数据库中使用此功能,我的意思是我将如何检查wp_link_chk列作为我的句子的针?
使用
MySQL 函数LOCATE
你可以使用类似的东西
... WHERE LOCATE( wp_link_chk, :userInput ) > 0
编辑:请注意,这种方法当然可能会返回多个记录,例如,如果"http://www.example.com"
与"http"
,"www"
和".com"
匹配。
嗯,匹配这些的最接近的方法是使用 mysql LIKE 函数。
实际语句类似于
SELECT wp_link_factor WHERE wp_link_chk LIKE %www.example.com%
但是由于您使用的是wordpress准备语句,因此请像这样使用它:
$linkcdb = $wpdb->query($wpdb->prepare("SELECT wp_link_factor WHERE wp_link_chk LIKE %s", '%' . $u . '%'));
--更新--
为了完成,您可以使用 REGEXP 匹配使用以下查询来选择wp_link_chk列中包含 http、www 或 .com 的行。
SELECT wp_link_factor WHERE wp_link_chk REGEXP '(http)|(www)|('.com)'