![](/img/trans.png)
[英]Trying to use mysql query inside of a php function to call data from database.
[英]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']; ?>
跑
$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.