簡體   English   中英

設置為等於時,PHP STMT MySQL查詢返回LIKE結果

[英]PHP STMT MySQL query returning LIKE results when set to equals

也許我遺漏了一些明顯的東西,但是我沒有從查詢中得到期望的結果。 我正在從非嚴格的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 但是當你像這樣綁定$title

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

您將其強制轉換為整數。 將該行更改為

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

bind_param"i"表示參數以整數形式傳遞,而"s"則將其視為字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM