PHP-Typo教程?

PHP-Typo教程?,php,Php,我无法通过echo打印关键字。 相反,我得到: `keywords` LIKE '%keyword%' 什么?代码已被逐字复制。可能是平台问题吗 此语句是否有问题->$where.=“关键字如“%keyword%” 当您看到以下代码时 `keywords` LIKE '%keyword%' 本教程告诉您,您需要在两个%之间,用您想要的任何关键字替换%keyword%。因此,您的代码应该如下所示: <?php include 'db.inc.php'; functio

我无法通过echo打印关键字。 相反,我得到:

`keywords` LIKE '%keyword%'
什么?代码已被逐字复制。可能是平台问题吗

此语句是否有问题->
$where.=“
关键字
如“%keyword%”


当您看到以下代码时

`keywords` LIKE '%keyword%'
本教程告诉您,您需要在两个
%
之间,用您想要的任何关键字替换
%keyword%
。因此,您的代码应该如下所示:

<?php

    include 'db.inc.php';

    function search_results($keywords) {
        $returned_results=array();
        $where="";

        $keywords=preg_split('/[\s]+/', $keywords);
        $total_keywords = count($keywords);

        foreach($keywords as $key=>$keyword){
            $where .= "`keywords` LIKE '%$keyword%'"; // Issue fixed.
            if($key != ($total_keywords-1)){
                $where .= " AND ";  
            }
        }  

        echo $where;
    }

?>

我对你的代码做了一些重构,现在更清楚了。请参见代码中的注释

include 'db.inc.php';

function search_results($keywords) {
    $where = array();

    // skip empty results with PREG_SPLIT_NO_EMPTY flag
    $keywords = preg_split('/[\s]+/', $keywords, -1, PREG_SPLIT_NO_EMPTY);

    foreach ($keywords as $keyword) {
        // escape string (anti sql injection)
        $keyword = mysql_real_escape_string($keyword);

        // your problem was using keyword instead of $keyword
        $where[] = "`keywords` LIKE '%$keyword%'";
    }  

    echo implode(' AND ', $where);
}

在我看来,这只是where子句中教程中的一个输入错误——在关键字变量名之前缺少$character。其他答案提供了答案,但没有指出这看起来像是打字错误。对于来自其他语言的人来说,这是一种常见的拼写错误,他们不需要像PHP那样为变量名添加前缀

您没有在任何地方使用
$keyword
-这可能是问题所在吗?您可能希望
$where.=“`keywords`像“%$keyword'”参见
include 'db.inc.php';

function search_results($keywords) {
    $where = array();

    // skip empty results with PREG_SPLIT_NO_EMPTY flag
    $keywords = preg_split('/[\s]+/', $keywords, -1, PREG_SPLIT_NO_EMPTY);

    foreach ($keywords as $keyword) {
        // escape string (anti sql injection)
        $keyword = mysql_real_escape_string($keyword);

        // your problem was using keyword instead of $keyword
        $where[] = "`keywords` LIKE '%$keyword%'";
    }  

    echo implode(' AND ', $where);
}