Поисковый запрос PHP с базой данных SQLite3

Я нашел очень хороший поисковый запрос здесь, но в этом поисковом запросе используется mysql database, и теперь я пытаюсь адаптировать этот код к SQLite3 database, но с моим текущим кодом я получаю эту ошибку

Fatal error: Call to a member function fetchArray() on a non-object in C:\xampp\htdocs\xport\searchtext.php on line 79

Ниже мой текущий код

<?php
require_once ("db.php");
$db = new MyDB();

$with_any_one_of = "";
$with_the_exact_of = "";
$without = "";
$starts_with = "";
$search_in = "";
$advance_search_submit = "";

$queryCondition = "";
if (!empty($_POST["search"])) {
    $advance_search_submit = $_POST["advance_search_submit"];
    foreach($_POST["search"] as $k=>$v){
        if (!empty($v)) {

            $queryCases = array("with_any_one_of","with_the_exact_of","without","starts_with");
            if (in_array($k,$queryCases)) {
                if (!empty($queryCondition)) {
                    $queryCondition .= " AND ";
                } else {
                    $queryCondition .= " WHERE ";
                }
            }
            switch($k) {
                case "with_any_one_of":
                    $with_any_one_of = $v;
                    $wordsAry = explode(" ", $v);
                    $wordsCount = count($wordsAry);
                    for($i=0;$i<$wordsCount;$i++) {
                        if (!empty($_POST["search"]["search_in"])) {
                            $queryCondition .= $_POST["search"]["search_in"] . " LIKE '%" . $wordsAry[$i] . "%'";
                        } else {
                            $queryCondition .= "question LIKE '" . $wordsAry[$i] . "%' OR answer LIKE '" . $wordsAry[$i] . "%'";
                        }
                        if ($i!=$wordsCount-1) {
                            $queryCondition .= " OR ";
                        }
                    }
                    break;
                case "with_the_exact_of":
                    $with_the_exact_of = $v;
                    if (!empty($_POST["search"]["search_in"])) {
                        $queryCondition .= $_POST["search"]["search_in"] . " LIKE '%" . $v . "%'";
                    } else {
                        $queryCondition .= "question LIKE '%" . $v . "%' OR answer LIKE '%" . $v . "%'";
                    }
                    break;
                case "without":
                    $without = $v;
                    if (!empty($_POST["search"]["search_in"])) {
                        $queryCondition .= $_POST["search"]["search_in"] . " NOT LIKE '%" . $v . "%'";
                    } else {
                        $queryCondition .= "question NOT LIKE '%" . $v . "%' AND answer NOT LIKE '%" . $v . "%'";
                    }
                    break;
                case "starts_with":
                    $starts_with = $v;
                    if (!empty($_POST["search"]["search_in"])) {
                        $queryCondition .= $_POST["search"]["search_in"] . " LIKE '" . $v . "%'";
                    } else {
                        $queryCondition .= "question LIKE '" . $v . "%' OR answer LIKE '" . $v . "%'";
                    }
                    break;
                case "search_in":
                    $search_in = $_POST["search"]["search_in"];
                    break;
            }
        }
    }
}
$orderby = " ORDER BY quiz_id desc"; 
$sql = "SELECT * FROM questions " . $queryCondition;
$result = $db->exec($sql);
if ($result)
{
    echo "Good";
    while ($row = $result->fetchArray(SQLITE3_ASSOC))
    {
        $question = $row['question'];
        echo $question;
    }
}
else 
{
    echo "No results found";
}
?>
<form name = "frmSearch" method = "post" action = "searchtext.php">
<input type = "hidden" id = "advance_search_submit" name = "advance_search_submit" value = "<?php echo $advance_search_submit; ?>">
<div class = "search-box">
    <label class = "search-label">With Any One of the Words:</label>
    <div>
        <input type = "text" name = "search[with_any_one_of]" class = "demoInputBox" value = "<?php echo $with_any_one_of; ?>"  />
        <span id = "advance_search_link" onClick = "showHideAdvanceSearch()">Advance Search</span>
    </div>              
    <div id = "advanced-search-box" <?php if (empty($advance_search_submit)) { ?>style = "display:none;"<?php } ?>>
        <label class = "search-label">With the Exact String:</label>
        <div>
            <input type = "text" name = "search[with_the_exact_of]" id = "with_the_exact_of" class = "demoInputBox" value = "<?php echo $with_the_exact_of; ?>"   />
        </div>
        <label class = "search-label">Without:</label>
        <div>
            <input type = "text" name = "search[without]" id = "without" class = "demoInputBox" value = "<?php echo $without; ?>" />
        </div>
        <label class = "search-label">Starts With:</label>
        <div>
            <input type = "text" name = "search[starts_with]" id = "starts_with" class = "demoInputBox" value = "<?php echo $starts_with; ?>" />
        </div>
        <label class = "search-label">Search Keywords in:</label>
        <div>
            <select name = "search[search_in]" id = "search_in" class = "demoInputBox">
                <option value = "">Select Column</option>
                <option value = "title" <?php if ($search_in= = "title") { echo "selected"; } ?>>Title</option>
                <option value = "description" <?php if ($search_in= = "description") { echo "selected"; } ?>>Description</option>
            </select>
        </div>
    </div>

    <div>
        <input type = "submit" name = "go" class = "btnSearch" value = "Search">
    </div>
</div>
</form>

Пожалуйста, любая помощь будет оценена по достоинству. Заранее спасибо.

попробуйте повторить $ sql и запустить этот запрос в базе данных

coder 27.04.2018 11:52

Он отозвался должным образом

diagold 27.04.2018 12:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
409
1

Ответы 1

Есть несколько способов сделать это. Вы можете попробовать использовать нижеуказанные способы -

  1. $query->fetch(SQLITE_ASSOC), это объектно-ориентированный подход. Теперь вы следуете этому подходу. Измените свой код, используя этот подход, надеюсь, он сработает.

  2. другим способом может быть процедурный подход, такой как этот код while ($entry = sqlite_fetch_array($query, SQLITE_ASSOC)) {

Спасибо, но не работает, теперь у меня Call to undefined function sqlite_fetch_array().

diagold 27.04.2018 12:41

Другие вопросы по теме