MySQLi Yakalanabilir Ölümcül Hata

1 Cevap php

Ben hazırlanmış deyimleri ve MySQLi kullanıyorum, ve şu anda bu hatayı alıyorum.

PHP Catchable fatal error:  Object of class mysqli_stmt could not be converted to string in /Users/me/path/to/project/ModelBase/City.php on line 31

O (tam fonksiyon) geliyor kodu:

    function select($query, $limit)
{
    $query = "%".$query."%";
    $con = ModelBase::getConnection();
    $sql = "SELECT name FROM cities WHERE name LIKE ? LIMIT ?";
    $query = $con->prepare($sql) or die("Error preparing sql in City ".parent::$db_conn->error);
    $query->bind_param("si", $query, $limit) or die("Error binding params in City ".parent::$db_conn->error);
    $query->execute() or die("Error executing query in City");

    $tmp = "";
    $res = $query->bind_result($tmp);
    while($query->fetch());
    {
        $citylist[] = $tmp;
    }
    $query->close();
}

31 gibi $ sorgu-> execute () vardır. Bu konuda herhangi bir bilgi bulamıyorum, ve bu ben inşa edilmiş ve bu sorunu vardı hiç diğer sistemlere neredeyse aynı sözdizimi.

1 Cevap

Ben sorun iki bağlamlarda $query kullandığınız olduğunu düşünüyorum. Bir kez SQL dize olarak, ve bir kez deyimi hazırlamak için:

$query = "%".$query."%";
...
$query = $con->prepare($sql) 

bu yüzden bu satırı çalıştırdığınızda:

 $query->bind_param("si", $query <--- bind to itself?

Gerçek sorgu yürütme kilitlenebilir.