Выбор нескольких данных из базы данных через PHP

1

У меня есть форма поиска, которая позволяет получить имя пользователя пользователя, однако я не могу понять, как заставить его вернуться больше, я хочу, чтобы он отображал также имена и фамилии.

Ниже приведен код в минуту, который работает, но когда я пытаюсь добавить больше переменных, например if ($stmt = $connection->prepare ("SELECT Username FROM users WHERE Username LIKE?")) это не вернуть что-либо вообще и просит вставить поисковый запрос.

Я также пробовал, if ($stmt = $connection->prepare ("SELECT Username FROM users WHERE Username LIKE %?%")) И LIKE "%?%")), Но результатов нет.

search.php

<?php 
include 'connection.php';
if(isset($_POST['searchsubmit']))
{
    include 'searchform.php';
        $name=$_POST['name'];
         if ($stmt = $connection->prepare ("SELECT Username FROM users WHERE Username LIKE ?")) 
        {
            $stmt->bind_param('s', $name);
            $stmt->execute();
            $stmt->bind_result($personresult);
            $stmt->fetch();
            ?>
            <center>
                <BR>
                <h1>Search Results are as follows:</h1>
                <h2>USERNAMES</h2>
                <BR>
            <?php

            print_r($personresult);
               ?>
            </center>
            <?php
        } 
        else
        { 
            echo  "<p>Please enter a search query</p>"; 
        } 
    }
 else 
    {
     echo "NOT SET!";
     }
  • 1
    Часть между select и from - это то, что вы выбираете. Так с select Username FROM users WHERE Username LIKE ? Вы только выбираете username , добавляете столбцы, которые вы хотите в этом списке, разделенные запятыми. Если ваше имя пользователя не точное, вам нужно добавить % s к вашей переменной $name .
  • 0
    Извините, я забыл упомянуть, что пытался использовать * и выбирать больше, но это не сработало. Код выше - это то, что я сейчас работаю.
Показать ещё 7 комментариев
Теги:
search

4 ответа

1

Вы звоните только по имени Username. Вам нужно позвонить *

SELECT * FROM users WHERE Username LIKE ?

Это мой личный сценарий, который я использую:

<?php

$dbservername = "localhost";
$dbusername = "db_user";
$dbpassword = "pass";
$dbname = "db";
// Create connection
$conn = new mysqli($dbservername, $dbusername, $dbpassword, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if (!empty($_POST["username"])) {
$username = $_POST["username"];
}
if (!empty($_POST["password"])) {
$password = $_POST["password"];
}

    $sql = "SELECT * FROM users";
    $result = $conn->query($sql);
   if ($result->num_rows > 0) {

     while ($row = $result->fetch_assoc()) {
     echo $row["Username"] . " " . $row["Firstname"] . " " .  $row["Lastname"] . "<br>";
if ($row["Username"] == $username && $row["Password"] == $password) {
            echo "success";
            // do more stuff here like set session etc
        } else {
            $echo "incorrect username and/or password";
        }
     }
    }
?>
  • 0
    Извините, да, я должен был упомянуть, что я пытался использовать несколько и *, но это не работает
  • 0
    Это именно тот код, который я использую для своего имени пользователя, за исключением нескольких вещей, которые я, конечно, не буду показывать в целях безопасности :-)
Показать ещё 1 комментарий
0

Вы инициализируете объект statement с помощью mysqli_stmt_init?

См. Mysqli_stmt_init и mysqli-stmt.prepare

0

Если сервер базы данных не может успешно подготовить оператор, PDO :: prepare() возвращает FALSE или испускает PDOException (в зависимости от обработки ошибок)

добавьте эту строку в connection.php сразу после создания объекта подключения:

$connection->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

По крайней мере, вы можете отслеживать возможные ошибки

0
<?php 

    include 'connection.php';
    if( isset( $_POST['searchsubmit'] ) ) {

        include 'searchform.php';
        $name=$_POST['name'];

        if ( $stmt = $connection->prepare ("SELECT 'Username','firstname','lastname' FROM 'users' WHERE 'Username' LIKE ?") ) {
            /* not 100% sure about whether this is required here like this or not but usually a like expression uses '%' as a wildcard */

            $var='%'.$name'.%';
            $stmt->bind_param('s', $var );

            $res=$stmt->execute();
            /* 3 columns selected in query, 3 columns bound in results */
            $stmt->bind_result( $personresult, $firstname, $lastname );

            if( $res ){

                $stmt->fetch();

                echo "
                    <center>
                        <BR>
                        <h1>Search Results are as follows:</h1>
                        <h2>USERNAMES</h2><!-- 3 columns/variables -->
                        {$personresult},{$firstname},{$lastname}
                        <BR>
                    </center>";
            }

        } else { 
            echo  "<p>Please enter a search query</p>"; 
        }
    } else {
        echo "NOT SET!";
    }

    $stmt->close();
    $connection->close();
?>
  • 0
    К сожалению, он просто просит меня ввести поисковый запрос

Ещё вопросы

Сообщество Overcoder
Наверх
Меню