为什么这段代码会失败? mysql 喜欢的问题

Why is this code failing? mysql like problem

我想在 mysql 数据库中搜索。我希望发送的搜索在 table 的 2 列中进行搜索。但是我没有得到这段代码的结果。

$Ara = $db->prepare("SELECT * FROM urun_bilgileri WHERE (urun_adi LIKE ? OR urun_kodu LIKE ?)");
$Ara->execute(array('%'.$Gelen.'%'));
while($Liste = $Ara->fetchAll(PDO::FETCH_ASSOC)){;
     $toplam_icerik = $Ara->rowCount();
}

问题出在哪里?

试试这个,需要传递两个值

$Ara = $db->prepare("SELECT * FROM urun_bilgileri WHERE (urun_adi LIKE ? OR urun_kodu LIKE ?)");
$Ara->execute(array('%'.$Gelen.'%','%'.$Gelen.'%'));
while($Liste = $Ara->fetchAll(PDO::FETCH_ASSOC)){;
     $toplam_icerik = $Ara->rowCount();
}

您在查询中使用了两个占位符,但只传递了一个参数。 必须传递两个参数,例如:

$keyword = '%'.$Gelen.'%';
$Ara = $db->prepare("SELECT * FROM urun_bilgileri WHERE (urun_adi LIKE ? OR urun_kodu LIKE ?)");
$Ara->execute(array($keyword, $keyword));

或者您可以使用命名占位符。例如:

$keyword = '%'.$Gelen.'%';
$Ara = $db->prepare("SELECT * FROM urun_bilgileri WHERE (urun_adi LIKE :urun_adi OR urun_kodu LIKE :urun_kodu)");
$Ara->execute(array(':urun_adi' => $keyword, ':urun_kodu =>$keyword));

启用 PHP error_reporting 和 PDO error_reporting 而不是 PHP 在错误消息中告诉您这一点。

error_reporting(-1);
ini_set('display_errors', true);

http://php.net/manual/de/pdo.error-handling.php