繁体   English   中英

通过PHP从数据库中选择多个数据

[英]Selecting multiple data from a database through PHP

我有一个搜索表单,它可以检索用户的用户名,但是我不知道如何使用户名返回更多,我也希望它也显示名字和姓氏。

下面是可以正常使用的代码,但是当我尝试添加更多变量时,例如, 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!";
     }

您仅在呼叫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";
        }
     }
    }
?>

您是否正在使用mysqli_stmt_init初始化语句对象?

参见mysqli_stmt_initmysqli-stmt.prepare

如果数据库服务器无法成功准备该语句,则PDO :: prepare()返回FALSE或发出PDOException(取决于错误处理)

在创建连接对象之后,立即在connection.php添加以下行:

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

至少,您可以跟踪可能的错误

<?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();
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM