我试图从wordpress数据库中的自定义表中获取数据,以便根据访问的产品(我使用变量)显示不同的内容这是一家商店。
到目前为止,我已经:
$sku = $wpdb->esc_like($product->get_sku())."%";
$sql = $wpdb->prepare(\'SELECT * FROM `table` WHERE `sku` LIKE "\'.$sku.\'"\');
$result = $wpdb->get_results($sql);
var_dump($result);
我得到:
array(0) {
}
如果我放置一个测试sku而不是变量,它将返回良好的结果:
$sql = "SELECT * FROM `table` WHERE `sku` LIKE \'%DCAT19%\' LIMIT 1";
$result = $wpdb->get_results($sql);
echo $sql;
var_dump($result);
我得到:
SELECT * FROM `table` WHERE `sku` LIKE \'%DCAT19%\' LIMIT 1
array(1) {
[0]=>
object(stdClass)#7675 (24) {
["id"]=>
string(1) "1"
["sku"]=>
string(17) "DCAT19MDIXHUEFL-L"
["fieldcount"]=>
string(1) "4"
...etc
但我需要这个变量才能工作,所以它可以根据访问的产品而变化。
现在,如果我在使用变量时回显$sql的结果,即:
$sql = $wpdb->prepare(\'SELECT * FROM `table` WHERE `sku` LIKE "\'.$sku.\'"\');
它给出一个长字符串,而不是%(!!!):
SELECT * FROM `table` WHERE `sku` LIKE "DCSS20MBJOF01HB{0ff8bf1af1220a9d0556b6de44274e60e96a206d5cac40b1b55605b27fe76b4a}"
我不知道会发生什么!!我想这可能打破了这个疑问?不知道下一步该怎么办。
我也尝试过(使用变量):
双转义%
引用表名和列名,使用sprintf调用具有%s的变量,得到相同的结果。。。零和/或长字符串中的数组,而不是%中的数组。那么,如果有人能告诉我,我做错了什么?提前非常感谢。