Wordpress get_results解析符号"&"

时间:2017-04-08 11:47:00

标签: wordpress

我有一件奇怪的事,我不知道失败的地方。

$name = "Fast & Furious 8";

$res1 = $wpdb->prepare(
    "
        SELECT 
            * 
        FROM 
            wp_dbtable 
        WHERE 
            filmname = '%s' 
        LIMIT 1
    ", 
    $name
);

$res = $wpdb->get_results( $res1 );

foreach($res as $reseachG) {

}

我遇到符号问题&。由于某些原因,它不会从我的桌子中拉出任何东西,即使它应该这样做。

如果我使用自己的文本代替变量,就像这样:

$res1 = $wpdb->prepare(
    "
        SELECT 
            * 
        FROM 
            wp_dbtable 
        WHERE 
            filmname = '%s' 
        LIMIT 1
    ", 
    "Fast & Furious 8"
);

它有效。此外,变量内的其他文本效果很好。

所以似乎prepareget_results不接受此符号,或更改它。我该如何解决?我无法在互联网上找到任何暗示。

可能不是PHP - 问题,或My-SQL - 问题,这可能是WordPress课程的问题。

非常感谢。

1 个答案:

答案 0 :(得分:0)

上面的代码是正确的。问题是,我从电影名称中删除了电影名称的文本。他改变了&进入html-special-chars。所以我不得不跑:htmlspecialchars_decode($filmname);。这并不容易找到,因为每种印刷方法都印有正确的文字。

我在互联网上找到了一个功能,它向我展示了隐藏的字符和每一个真实的内容。也许它会帮助你们中的一些人:

function hexdump ($data, $htmloutput = true, $uppercase = false, $return = false){
// Init
$hexi   = '';
$ascii  = '';
$dump   = ($htmloutput === true) ? '<pre>' : '';
$offset = 0;
$len    = strlen($data);

// Upper or lower case hexadecimal
$x = ($uppercase === false) ? 'x' : 'X';

// Iterate string
for ($i = $j = 0; $i < $len; $i++)
{
    // Convert to hexidecimal
    $hexi .= sprintf("%02$x ", ord($data[$i]));

    // Replace non-viewable bytes with '.'
    if (ord($data[$i]) >= 32) {
        $ascii .= ($htmloutput === true) ?
                        htmlentities($data[$i]) :
                        $data[$i];
    } else {
        $ascii .= '.';
    }

    // Add extra column spacing
    if ($j === 7) {
        $hexi  .= ' ';
        $ascii .= ' ';
    }

    // Add row
    if (++$j === 16 || $i === $len - 1) {
        // Join the hexi / ascii output
        $dump .= sprintf("%04$x  %-49s  %s", $offset, $hexi, $ascii);

        // Reset vars
        $hexi   = $ascii = '';
        $offset += 16;
        $j      = 0;

        // Add newline            
        if ($i !== $len - 1) {
            $dump .= "\n";
        }
    }
}

// Finish dump
$dump .= $htmloutput === true ?
            '</pre>' :
            '';
$dump .= "\n";

// Output method
if ($return === false) {
    echo $dump;
} else {
    return $dump;
}
}

其中显示了每个字符的hexa代码以及每个空格,行,特殊转换符号或行制动器。它有助于查看真实数据。

总而言之。