【发布时间】:2015-08-26 01:49:55
【问题描述】:
我有一个简单的搜索 form,我用它使用 AJAX 向我的 php 脚本发送 POST 请求。我希望脚本在我的数据库中搜索标题列中的关键字,并返回找到它的行。发布的数据看起来像这样"searchword=test1",其中test1 在我的文本输入内容中。
我的数据库中有 2 行,其中一个的标题为 test1,另一个为 test2。如果我这样做SELECT * FROM articles,我可以看到结果很好。如果我在控制台中输入SELECT * FROM articles WHERE title LIKE 'test1';,我会得到正确的结果,但我的 php 脚本会返回一个空数组。
不知道我在这里做错了什么,感谢任何帮助。
我的 php:
try {
$hostname = "localhost";
$username = "root";
$password = "";
$db = new PDO("mysql:host=$hostname;dbname=topdecka_PTC",$username, $password);
if (!empty($_POST["searchword"])) {
$searchword = $_POST["searchword"];
$query = $db->prepare("SELECT * FROM articles WHERE title LIKE %:seachword%");
$query->execute(array(':searchword' => $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();
}
【问题讨论】:
-
$_POST{"searchword"}语法错误和所有 POST 数组; 为了一件事。阅读 superglobals php.net/manual/en/language.variables.superglobals.php 更具体的$_POST。 -
把花括号改成了[ ],还是不行。我没有收到任何错误,它只是返回一个空数组而不是标题列为“test1”的行
-
您忘记了
%:seachword%中的$