PHP STMT MySQL 查询在设置为等于时返回 LIKE 结果

标签 php mysql

也许我遗漏了一些明显的东西,但我没有从这个查询中得到我期望的结果。我从非严格的 LIKE 查询中得到了我期望的结果。

public function get_product_list_by_title($title){
    $result = ARRAY();
    $stmt = $this->cn->prepare("SELECT `id`, `name`, `price`, `comments` FROM Products WHERE `name` = ?");
    $stmt->bind_param("i", $title);
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result(
        $id,
        $name,
        $price,
        $notes
    );
    while ($stmt->fetch()) {
        $result[] = Array(
            "id" => $id,
            "name" => $name,
            "price" => $price,
            "notes" => $notes
        );
    }
    $stmt->free_result();
    $stmt->close();
    return $result;
}

例如,如果我搜索“3”,我会得到所有以 3 开头的项目(可能更多 - 它是一个小数据集)

有什么想法吗?

最佳答案

根据您的评论,$title 是一个字符串,name 列是一个 VARCHAR。但是当你像这样绑定(bind) $title

$stmt->bind_param("i", $title);

您强行将其转换为整数。将该行更改为

$stmt->bind_param("s", $title);

bind_param中,"i"表示参数作为整数传递,而"s"将其作为字符串处理。

关于PHP STMT MySQL 查询在设置为等于时返回 LIKE 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34095844/

相关文章:

PHP Mysql ASC AND DESC 命令正确使用吗?

PHP/MySQL : How to save media player playlist order

mysql - 未定义方法 `+@' 为 nil :NilClass rails after moving to mysql

mysql - 如何识别所有表中都存在同名列?

php - 无法插入到 mySQL 表中

php - 将自定义类添加到 Symfony 表单标签

php - 为什么 mysql_real_escape_string() 不应该避免任何 SQL 注入(inject)?

java - 从 Servlet 连接到 MySQL 不工作

php - 某个页面一次只有两个人?

javascript - 如何配置 apache 以使用 php 创建 javascript 文件