2015-06-10 3 views
0

У меня есть простая форма поиска, которая отправляет почтовый запрос в мой php-файл, который содержит входные данные, подобные этому "searchword=test1". Затем я использую это с PDO для поиска моей таблицы для математических данных.mysql PDO с SELECT OR, Error !: SQLSTATE [HY093]

До сих пор я был только один столбец поиска, используя эту инструкцию:

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

, но теперь я хочу найти trought 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/>".

Если я запустил инструкцию SQL с помощью bash (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(); 
} 
?> 
+0

Пожалуйста эхо запроса, что делает это шоу ... Я думаю, что есть проблема. ваша строка запроса выглядит сумасшедшей для меня –

ответ

3

У вас есть опечатка: 2 х :seachword и 2 х :searchword

Смежные вопросы