【问题标题】:Using PDO to search database [duplicate]使用 PDO 搜索数据库 [重复]
【发布时间】:2016-02-16 15:55:27
【问题描述】:

我正在尝试使用 PDO 为我的网站创建搜索功能。目前,我通过 URL 发送搜索查询,然后尝试获取结果,但是每当我执行 var 转储时,它都会返回 null。我在我的管理员 PHP 上测试了查询,它返回了大约 4 个结果。

我使用我创建的一个类连接到数据库,这适用于我的所有其他查询。

这是我的搜索功能

function search($query) {

    $sql = "SELECT * FROM `Sweets` WHERE `Description` LIKE :search";
    $stmt = $this->connection->prepare($sql);
    $stmt->bindParam(':search', $query);

    $stmt->execute();

    $done = $stmt->fetch();

    var_dump($done[0]);


}

以下是我的表单作为操作调用的搜索 php

<?php
// Start our connecting to our database
require('class-database-functions.php');

$database = new Database_Functions();

// Get the search value passed through $_GET
$search_query = $_GET['query'];

$search = $database->search($search_query);


?>

【问题讨论】:

  • 试试 $done = $stmt->fetchAll();
  • 您是否检查过您的函数中的$query 是否正确?
  • 不要假设查询成功!检查是否有任何错误。将 PDO 设置为异常 errmode,然后使用异常try { ... } catch(PDOException $e) { ... }
  • @CharlotteDunois you should never catch errors to report them.。必须设置正确的 PHP 错误报告。
  • $query 是您所期望的吗?在运行查询时尝试打开 mysql 日志记录,以验证发送的查询是否符合您的预期。

标签: php mysql pdo


【解决方案1】:

试试这个

$sql = "SELECT * FROM `Sweets` WHERE `Description` LIKE ?";
$stmt = $this->connection->prepare($sql);
$stmt->bindValue(1, "%$query%",PDO::PARAM_STR);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2017-09-26
    • 1970-01-01
    • 2023-03-03
    • 2013-07-06
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多