【发布时间】:2026-01-29 17:50:02
【问题描述】:
我有一个脚本可以在不刷新页面的情况下进行搜索。我正在尝试从旧的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 脚本一起工作。
【问题讨论】:
-
究竟什么不起作用?
-
那么问题出在哪里?我不明白。看,你就是那个,你看到输出,差异,数组。请尝试解释您无法解决的实际问题。
-
一切正常,我只是想从 mysql_connect 转移到 PDO 连接,更改脚本。第一个 search.php 文件有效。我正在尝试将那个交换到 pdo 连接之一。
-
帖子没有显示任何内容。那是我的问题
-
@sw0o0sh 这已经比您之前与我们分享的要多得多了 :)。请展示一些调试工作。