php pdo查询不起作用
我一直在尝试使用prepare、bindParam和execute函数实现PDO,以允许根据用户输入的数据构造查询 我想显示图书列表,然后允许用户过滤列表,然后查看新列表和完整列表 当我在表单中输入搜索条件时,什么也没有发生。我忽略了什么 这是密码php pdo查询不起作用,php,html,mysql,pdo,Php,Html,Mysql,Pdo,我一直在尝试使用prepare、bindParam和execute函数实现PDO,以允许根据用户输入的数据构造查询 我想显示图书列表,然后允许用户过滤列表,然后查看新列表和完整列表 当我在表单中输入搜索条件时,什么也没有发生。我忽略了什么 这是密码 <?php $pageTitle = "Book List"; $pageHeading = "Book List"; include_once ('header.php'); i
<?php
$pageTitle = "Book List";
$pageHeading = "Book List";
include_once ('header.php');
include_once('databaseConnection.php');
if(isset($_POST['txtSearchBookTitle'])) {
$db = new DatabaseConnection();
$db = $db->db_connection;
$searchTitle = ($_POST['txtSearchBookTitle']);
$sql = $db->prepare("SELECT title FROM tblBook WHERE title LIKE ('%:searchTitle%') ORDER BY title");
$sql->bindParam(':searchTitle', $searchTitle);
$sql->execute();
$result = $sql->fetchAll();
print_r($result);
foreach ($result as $row) {
echo "<li>" . " " . $row["title"]. " " . "</li>";
}
}
?>
<form name="searchBookTitle" method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>" >
<fieldset>
<legend>Search Books</legend>
<label for="txtSearchBookTitle">Search by Book Title</label>
<input type="text" name="txtSearchBookTitle" id="txtSearchBookTitle">
<input type="submit" value="Submit">
</fieldset>
</form>
<?php
include_once('getBooks.php');
getBooks();
include 'footer.php';
?>
您需要以这种方式准备输入:
$searchTitle = $_POST['txtSearchBookTitle'];
$sql = $db->prepare("SELECT title FROM tblBook WHERE title LIKE :searchTitle ORDER BY title");
$sql->execute(array(':searchTitle' => '%' . $searchTitle . '%'));
或者像这样:
$searchTitle = $_POST['txtSearchBookTitle'];
$sql->bindParam(':searchTitle', "%{$searchTitle}%");
在fetchAll中使用PDO::FETCH_ASSOC。。这意味着它将以数组的形式返回数据
所以就这样吧
$result = $sql->fetchAll(PDO::FETCH_ASSOC);
如果您尝试在mysql中运行此查询,您想得到什么样的结果吗?我在数据库上运行了此SQL,从tblBook中选择title,其中title类似于“%the%”按title排序,每次我想将“the”更改为myUserVariable时都会返回结果。不定义fetch模式将导致fetch_,这是一个根据列和列使用键的数组索引。我认为这被否决了,因为我相信fetchAll会返回一个默认的关联数组。谢谢,对于信息浏览,因为%需要在语句中转义?@user3608286没有问题,只需将它们分开,如果在搜索查询中出现%,这将处理百分比转义