[英]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.