【问题标题】:PHP search - catchable fatal errorPHP 搜索 - 可捕获的致命错误
【发布时间】:2018-06-19 07:15:23
【问题描述】:

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

错误:可捕获的致命错误: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->query("SELECT * FROM dokumentumok WHERE brand = '$品牌'");

【问题讨论】:

标签: php search


【解决方案1】:

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

$vissza = $kapcsolat->query("SELECT * FROM dokumentumok WHERE brand = '$品牌'");

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

$vissza .= "AND gyartmany LIKE '$gyartmany'";

这行不通。一旦查询发送到 mysql,它就“消失”了。之后您无法对其进行编辑。您必须在使用-&gt;query() 发送查询之前构建您的查询。

还有: 请看一下PDO。此外,您的代码引入了 sql 注入。您可能想了解这一点。

这里有一个示例存根,以便您了解:

<?php
$vissza = "SELECT * FROM dokumentumok WHERE brand = '$brand'";
if (isset($brand))
{

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

    //...

}

$visszaResult = $kapcsolat->query($vissza);

// work with the result here

【讨论】:

  • 谢谢!它解决了“可捕获的致命错误”问题! :) 但是现在无法从数据库中找到任何东西......一切都未定义,也许连接不正常我试图解决这个问题:) 再次非常感谢! :)
猜你喜欢
  • 1970-01-01
  • 2011-01-20
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
相关资源
最近更新 更多