从数据库中提取数据。如何编写循环函数 PHP MYSQL
Extracting data from the database. how to write a loop function PHP MYSQL
问题如下。我有两个表用户和卡。当用户有两张或多张卡片时,如何编写循环函数?
示例:用户 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%'
但是如果您希望能够搜索卡号并找到与其所有者关联的所有卡,那么您必须采取一些额外的步骤。
我会选择这样的东西:
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来查找卡片所有者,然后获取所有关联的卡片。
问题如下。我有两个表用户和卡。当用户有两张或多张卡片时,如何编写循环函数? 示例:用户 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%'
但是如果您希望能够搜索卡号并找到与其所有者关联的所有卡,那么您必须采取一些额外的步骤。
我会选择这样的东西:
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来查找卡片所有者,然后获取所有关联的卡片。