Как связать param массив и значение в запросе - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть массив из n элементов, и я хочу связать его со значением $ genre. Вот что я пробовал: $ genre = $ _GET ['a_gen'] ?? ''; $ Genre взят из предыдущего запроса и является строкой. $ aTitle также является массивом строк.

<?php
                    if (isset($_POST['submit-search'])) {
                        $stmt = $conn -> prepare("SELECT a_titlu, a_autor, a_text, a_data, a_imagine, a_gen FROM articol WHERE a_titlu LIKE ? OR a_text LIKE ? 
                            OR a_autor LIKE ? OR a_data LIKE ?");
                        $search ='%'.$_POST['search'].'%';
                        $stmt -> bind_param('ssss', $search, $search, $search, $search);
                        $stmt -> execute();
                        $stmt -> store_result();
                        $stmt -> bind_result($a_titlu, $a_autor, $a_text, $a_data, $a_imagine, $a_gen);
                        $stmt -> get_result();
                        $count = $stmt -> num_rows();
                        $genre = $_GET['a_gen'] ?? '';
                        $aTitle = array();
                        if ($count > 0) {
                            if($count == 1)
                                echo "<h5 class='text-center toateArt'>Am găsit ".$count." rezultat!</h5>";
                            else
                                echo "<h5 class='text-center toateArt'>Am găsit ".$count." rezultate!</h5>";
                            while ($stmt -> fetch()) {
                                array_push($aTitle, $a_titlu);
                                echo "<div class='card'>
                                        <img src=".$a_imagine." class='imgRes' />
                                        <h3 class='articleTitle'>".$a_titlu."</h3>
                                        <h6 class='articleDT'><i class='fa fa-calendar'></i>".$a_data."&nbsp<i class='fa fa-user'></i>".$a_autor."</h6>
                                        <p class='articleDescription' style='text-align: justify;'>".$a_text."</p>
                                        <div class='button_cont' align='right'>
                                            <a class='buttonA' style='text-decoration: none;' href='article.php?title=".$a_titlu."&date=".$a_data."'>Citește</a>
                                        </div>
                                    </div>
                                <br>";
                            }
                        }
                    }
                ?>
                <?php
                    $in = str_repeat('?,', count($aTitle) - 1) . '?';
                    $aTitle[] = $genre;
                    $stmt = $conn -> prepare("SELECT  a_titlu, a_data, a_gen FROM articol WHERE a_titlu NOT IN ($in) AND a_gen = ?");
                    $types = str_repeat('s', count($aTitle));
                    $stmt -> bind_param($types, ...$aTitle);
                    $stmt -> execute();
                    $stmt -> store_result();
                    $stmt -> bind_result($a_titlu, $a_data, $a_gen);
                    $stmt -> get_result();
                    $count = $stmt -> num_rows();

                        while ($stmt -> fetch()) {
                            echo "<div class='card'><p>".$a_titlu."</p><p>".$a_data."</p><p>".$a_gen."</p></div><br>";
                        }
                ?>

1 Ответ

1 голос
/ 27 апреля 2020

Поскольку вы не можете ввести дополнительный параметр после использования аргумента для распаковки на $aTitle, проще всего было бы добавить его в массив в конце.

$in = str_repeat('?,', count($aTitle) - 1) . '?';
// Now add in value
$aTitle[] = $genre;
$stmt = $conn -> prepare("SELECT  a_titlu, a_data, a_gen 
                          FROM articol 
                          WHERE a_titlu NOT IN ($in) AND a_gen = ?");
$types = str_repeat('s', count($aTitle));
$stmt -> bind_param($types, ...$aTitle);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...