Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php pdo查询不起作用_Php_Html_Mysql_Pdo - Fatal编程技术网

php 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

我一直在尝试使用prepare、bindParam和execute函数实现PDO,以允许根据用户输入的数据构造查询

我想显示图书列表,然后允许用户过滤列表,然后查看新列表和完整列表

当我在表单中输入搜索条件时,什么也没有发生。我忽略了什么

这是密码

<?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没有问题,只需将它们分开,如果在搜索查询中出现%,这将处理百分比转义