我有一个无需刷新页面即可搜索的脚本。我正在尝试从旧连接转移mysql_connect
到新PDO
连接以使其更安全。我需要帮助更改我的 PDO 脚本,以便它与 post 函数一起使用。
我的 HTML 脚本:
<script type="text/javascript">
$(document).ready(function(){
$(".search").click(function(){
$.post("search.php", { keywords: $(".keywords").val() }, function(data){
$("div#content").empty()
$.each(data, function(){
$("div#content").append("- <a href='#?id=" + this.id + "'>" + this.title + "</a><br>");
});
}, "json");
});
});
</script>
</head>
<body>
<input type="text" name="search" class="keywords">
<input type="submit" name="submit" class="search">
<div id="content">
</div>
这是我的工作搜索脚本:
<?php
$link = mysql_connect("localhost","root","");
mysql_select_db("pirateconnection", $link);
$keywords = mysql_real_escape_string( $_POST["keywords"] );
$query = mysql_query("SELECT * FROM media WHERE title LIKE '%". $keywords ."%'");
$arr = array();
while( $row = mysql_fetch_array ( $query ) )
{
$arr[] = array( "id" => $row["id"], "title" => $row["title"]);
}
echo json_encode( $arr );
?>
我用 PDO 连接制作了一个新脚本:
<?php
$db = new PDO('mysql:host=localhost;dbname=pirateconnection','root','');
$query = $db->prepare("SELECT `media`.`title` FROM `media` WHERE `media`.`title` LIKE :keywords");
$keywords = (isset($_POST['keywords']) === true) ? $_POST['keywords'] : '';
$query->bindValue(':keywords', '%' . $keywords . '%', PDO::PARAM_STR);
try {
$query->execute();
$rows = $query->fetchAll(PDO::FETCH_ASSOC);
echo '<pre>', print_r($rows, true), '</pre>';
} catch(PDOException $e) {
die($e->getMessage());
}
?>
现在我需要让 PDO 脚本与 html/jquery post 脚本一起工作。