PHP搜索 - 捕获致命错误

时间:2018-06-19 07:15:24

标签: php search

我想写一个小搜索引擎,但我无法解决我的问题。 我试图找到任何解决方案,但我找不到根本原因。

错误:可捕获的致命错误:类mysql_result的对象未转换为字符串(在第31行)

include ("../connect.php");

$brand = $_POST["brand"];
$gyartmany = $_POST["gyartmany"];
$csalad = $_POST["csalad"];
$cikktipus = $_POST["tipus"];

//$cikkszamok = $_POST["cikkszamok"];

$doktipus = $_POST["doktipus"];
$ervenyessegkezdete = $_POST["ervenyessegkezdete"];
$ervenyessegvege = $_POST["ervenyessegvege"];
$dokazonosito = $_POST["dokazonosito"];
$fajlnev = $_POST["fajlnev"];
//$archiv = $_POST["archiv"];

$valasz= array();

if (isset($brand))
{
    $vissza = $kapcsolat->query("SELECT * FROM dokumentumok WHERE brand = '$brand'");

    if (isset($gyartmany)) {
        $vissza .= "AND gyartmany LIKE '$gyartmany'"; //Line 31
    }

    if (isset($csalad)) {
        $vissza .= "AND csalad LIKE '$csalad'";
    }

    if (isset($cikktipus)) {
        $vissza .= "AND cikktipus LIKE '$cikktipus'";
    }

    if (isset($cikkszamok)) {
        $vissza .= "AND erintett_cksz LIKE '$cikkszamok'";
    }

    if (isset($ervenyessegkezdete)) {
        $vissza .= "AND  letrehozas  >='$ervenyessegkezdete'";
    }

    if (isset($ervenyessegvege)) {
        $vissza .= "AND ervenyesseg <= '$ervenyessegvege'";
    }

    if (isset($dokazonosito)) {
        $vissza .= "AND dokazonosito LIKE '$dokazonosito'";
    }

    if (isset($fajlnev)) {
        $vissza .= "AND fajlnev LIKE '$fajlnev'";
    }

}

if (mysqli_num_rows($vissza)>0)  
{
    while($sor = mysqli_fetch_assoc($vissza))
    {
        array_push($valasz, $sor);
    }
} else {
    $valasz["uzenet"]=("sometext!");
}

print json_encode ($valasz);

我认为这一行的主要问题是:$ vissza = $ kapcsolat-&gt; query(“SELECT * FROM dokumentumok WHERE brand =     '$品牌'“);

1 个答案:

答案 0 :(得分:1)

$ vissza的类型为mysql_result,因为这行:

  

$ vissza = $ kapcsolat-&gt;查询(&#34; SELECT * FROM dokumentumok WHERE brand =   &#39; $品牌&#39;&#34);

但你尝试使用它,好像它是一个字符串,如:

  

$ vissza。=&#34; AND gyartmany LIKE&#39; $ gyartmany&#39;&#34;;

这不会奏效。一旦将查询发送到mysql,它就会消失了#34;。之后你无法编辑它。您必须在使用map.entrySet() .stream() .map(entry -> new Test(entry.getKey().getKey(), entry.getKey().getValue(), entry.getValue())) .collect(Collectors.toList()); 发送查询之前构建查询。

此外: 请看一下PDO。另外,您的代码引入了sql注入。你可能想读一下这个。

这是一个示例存根,所以你可以得到这个想法:

->query()