使用PHP,AJAX和jQuery搜索MySQL数据库

我正在尝试编写一个非常简单的搜索系统,用户在一个只有大约50个条目的小型数据库中搜索产品。 我正在尝试使用jQuery和AJAX将搜索查询发送到外部PHP脚本,该脚本执行实际的MySQL查询并返回结果列表,然后我可以将其附加到搜索页面。

我在搜索页面上有这个:

function makeAjaxRequest() { $.ajax({ url: 'search_execute.php', type: 'get', datatype: 'html', data: {search: $('#searchbox').val()}, success: function(response) { alert("Success!"); }, error : function() { alert("Something went wrong!"); } }); }); //capture user clicking button $('#searchbutton').click(function(){ makeAjaxRequest(); }); //capture user pressing 'return' $('form').submit(function(e){ e.preventDefault(); makeAjaxRequest(); });

当然,我只是使用警报进行调试。

这是来自外部脚本的我的PHP:

 prepare("SELECT product_id, product_name FROM products WHERE product_name LIKE '%' ? '%'"); $stmt -> execute(array($search)); $num = $stmt->rowCount(); } if ($num == 0){ echo "

Sorry, no products matched your search

"; } else { if ($num == 1){ echo '

We have found 1 product that matches your search terms. Please click the link to visit the product page.

'; } else { echo '

We have found '.$num.' products that match your search terms. Please click a link to visit the product page.

'; } echo ''; } ?>

问题是,它失败了,它无声地失败了。 我在控制台或Firebug中都没有任何警报,也没有任何错误。 PHP可以独立工作,但是当我使用搜索页面时 – bupkus。

编辑:我已经在makeAjaxRequest函数之外移动了事件处理程序,但仍然没有骰子。

您的Javascript代码不正确,您在函数makeAjaxRequest添加的事件函数因此从未调用过。 它应该是

  

您的括号在JavaScript代码中有点怪异。 它现在的样子,事件绑定在makeAjaxRequest()函数内部,因此处理程序永远不会被绑定到事件,直到首次调用该函数。 当然,该函数只能从事件处理程序中调用,因此从不调用它。

要解决此问题,只需将绑定复制粘贴到函数外部即可。

您还可以将第一个绑定更改为

 $('#searchbutton').click(makeAjaxRequest); 

获得较小的性能提升。

你应该使用你的查询

 $q = '%' .$search. '%' $stmt = $dbc->prepare("SELECT product_id, product_name FROM products WHERE product_name LIKE ?"); $stmt->execute(array($q)); 
  

在php文件中更改sql

 $stmt = $dbc->prepare("SELECT product_id, product_name FROM products WHERE product_name LIKE '%".$search."%' ");