簡體   English   中英

SELECT或SELECT的mysql PDO,錯誤!:SQLSTATE [HY093]

[英]mysql PDO with SELECT OR, Error!: SQLSTATE[HY093]

我有一個簡單的搜索表單,該表單將發布請求發送到我的php文件,該請求包含諸如"searchword=test1"類的輸入。 然后,將其與PDO一起使用以在表中搜索數學數據。

到目前為止,我只使用以下語句搜索一列:

$query = $db->prepare("SELECT * FROM articles WHERE title LIKE :seachword);

但現在我想搜索3列(分別是標題,摘錄和正文)。 我將代碼更改為:

$query = $db->prepare("SELECT * FROM articles WHERE title LIKE :seachword OR extract LIKE :searchword OR body LIKE :searchword");

現在出現一個錯誤,提示"Error!: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens<br/>"

如果我使用bash運行SQL語句( SELECT * FROM articles WHERE title LIKE '%test%' OR body LIKE '%elem%'; ),查詢結果將返回正常。

知道我缺少什么嗎?

這是我的代碼:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

try {
    $hostname = "localhost";
    $username = "root";
    $password = "";

    $db = new PDO("mysql:host=$hostname;dbname=topdecka_PTC",$username, $password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    if (!empty($_POST["searchword"])) {
        $searchword = $_POST["searchword"];
        $query = $db->prepare("SELECT * FROM articles WHERE title LIKE :seachword OR extract LIKE :searchword OR body LIKE :searchword");
        $query->execute(array(":seachword" => "%" . $searchword . "%"));

        $result = $query->fetchAll(PDO::FETCH_ASSOC);
        echo json_encode($result);
        die();
    } 
    else {
        $query = $db->prepare('SELECT * FROM articles');
        $query->execute();

        $result = $query->fetchAll(PDO::FETCH_ASSOC);
        echo json_encode($result);
        die();
    }
} catch (PDOException $e) {
    echo "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

您有錯別字:2 x :seachword和2 x :searchword

暫無
暫無

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

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