背景:我正在尝试在搜索框中的 keyup 上运行一些 AJAX,该搜索框将转到数据库进行查找,然后在不刷新页面的情况下返回结果。
问题:我不确定它是否真的连接到我的数据库。我已经使用THIS METHOD测试了连接,它说它对于我正在使用的凭据是成功的。但是,我可以将主机从locahost更改为www.MYDOMAINNAME.com或我的 cPanel 中的服务器名称,它仍然说它是一个成功的连接。如果它成功了,那为什么它不运行我的 SQL 呢?
问题:我下面的代码有问题吗?如果没有,我有没有更好的方法来测试发生了什么?
注意:我的控制台中的输出是“错误 [object Object]”。它成功地击中了 search.php,所以我认为这不是文件路径问题。我还在页面加载时运行了 PHP,而不是通过 AJAX 运行,一切似乎都运行良好。当我硬编码$query的值时,我能够得到一些结果。
文件结构:
(ROOT FOLDER)
index.php (where the form is)
(PHP FOLDER)
search.php
(JS FOLDER)
search.js
HTML:
<form action="php/search.php" method="post">
<input type="search" class="main-search" name="query" />
<div class="btn btn-lg btn-primary">Search</div></form>
</form>
jQuery:
$(function() {
$(".main-search").keyup(function() {
search($(this).val());
});
});
function search(query) {
$.ajax({
url:"./php/search.php",
type:"POST",
dataType:"json",
data: { query:query },
success: function(data) {
$(".result").html(data);
},
error: function(data) {
$(".result").html(data);
}
});
}
PHP:
<?php
$query = $_POST["query"];
$link = mysqli_connect('localhost', 'USER', 'PASS') or die ('Error connecting to mysql: ' . mysqli_error($link));
mysqli_select_db($link, 'DB_NAME');
/* check connection */
if (mysqli_connect_errno()) {
echo mysqli_connect_error();
exit();
}
/* Select queries return a resultset */
if ($result = mysqli_query($link, "SELECT actual FROM icons WHERE synonym = '$query'")) {
$row = mysqli_fetch_array($result);
echo $row["actual"];
mysqli_free_result($result);
}
else {
echo "No results found.";
}
mysqli_close($con);
?>