繁体   English   中英

从数据库中提取数据。 如何编写循环 function PHP MYSQL

[英]Extracting data from the database. how to write a loop function PHP MYSQL

问题如下。 我有两个表用户和卡。 当用户有两张或更多卡时,如何编写循环 function? 示例:用户 bane 有卡片 222222 和 454545。但是,当我向搜索字段发送问题时,它只会抛出第一张卡片。

<?php 
    require "connection.php";
    $search = $_POST['search'];

    $sql = "SELECT users.first_name, users.second_name, cards.card_number
            FROM users
            INNER JOIN cards
            ON cards.user_id = users.id
            WHERE cards.card_number = '$search'
            OR users.first_name = '$search'
            OR users.second_name = '$search'";

    $query = mysqli_query($db, $sql);
    $result = mysqli_fetch_assoc($query);

    echo $result['first_name']." ".$result['second_name']." ",
    $result['card_number']; ?>

https://i.stack.imgur.com/0VvXF.jpg

$results = mysqli_fetch_assoc($query);

foreach( $results as $result) {
    echo .....
}

您正在返回一个值。 如果我必须显示所有用户卡,我会做这样的事情。

<?php 
    require "connection.php";
    $search = $_POST['search'];

    $sql = "SELECT users.first_name, users.second_name, cards.card_number
            FROM users
            INNER JOIN cards
            ON cards.user_id = users.id
            WHERE
            users.first_name = '$search'
            OR users.second_name = '$search'";

    $query = mysqli_query($db, $sql);
while ($row = mysqli_fetch_assoc($query)) {

    echo $row['first_name']." ".$row['second_name']." ",
    $row['card_number']; 
} 
?>

这应该为每张卡片打印一行。

您还可以更改类似这样的 where 子句以查找部分字符串:

users.first_name LIKE '%$search%' 

但是,如果您希望能够搜索卡号并找到其所有者的所有关联卡,那么您必须采取一些额外的步骤。

我会为这样的事情 go :

 SELECT t1.customerIDi, cards.number, customer.* 
 FROM CARDS
 LEFT JOIN customer ON cards.CustomerID = customer.id
 INNER JOIN (
     SELECT customer.id AS customerIDi
     FROM customer
     LEFT JOIN cards
     ON cards.CustomerID = customer.id
     WHERE
     Cards.Number = "$search"
 ) AS t1
 ON t1.customerIDi = cards.CustomerID

http://sqlfiddle.com/#!9/82ad8/23/0

我嵌套了一个 select 来查找卡所有者,然后获取所有关联的卡。

暂无
暂无

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

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