Php 带有while循环输出的mysqli搜索只返回一条记录
只是学习了PHP并遇到了在搜索结果中输出多个值的问题 在一个数据库中有多个具有相同姓氏的事务,希望用户在“搜索”框中输入姓氏并获取所有事件,当前结构仅提供一个。感谢你的帮助。多谢各位 在函数中具有以下SQL查询:Php 带有while循环输出的mysqli搜索只返回一条记录,php,mysqli,Php,Mysqli,只是学习了PHP并遇到了在搜索结果中输出多个值的问题 在一个数据库中有多个具有相同姓氏的事务,希望用户在“搜索”框中输入姓氏并获取所有事件,当前结构仅提供一个。感谢你的帮助。多谢各位 在函数中具有以下SQL查询: function search_transactions_ln($x){ global $connection; $query = "SELECT ALL * "; $query .= "FROM transactions "; $query .=
function search_transactions_ln($x){
global $connection;
$query = "SELECT ALL * ";
$query .= "FROM transactions ";
$query .= "WHERE last_name = '{$x}' ";
$query .= "LIMIT 50";
$a3 = mysqli_query($connection, $query);
confirm_query($a3);
while ($a4 = mysqli_fetch_array ($a3)) {
return $a4;
}
}
使用以下代码检索结果,包括$\u POST:
if(isset($_POST['submit'])) {
$last_name = $_POST["ln"];
$found_transaction = search_transactions_ln($last_name);
if ($found_transaction) {
print $found_transaction["last_name"]; **==>>> this produces one result, want to see multiple**
} else {
// Failure
$_SESSION ["message"] = "Last name not found.
}
}
您只返回一个字符串,而不是所有结果 如果要打印所有这些文件,必须首先将它们收集到一个数组中,然后返回该数组 您可能需要更改您的功能:
function search_transactions_ln($x){
global $connection;
$query = "SELECT ALL * ";
$query .= "FROM transactions ";
$query .= "WHERE last_name = '{$x}' ";
$query .= "LIMIT 50";
$a3 = mysqli_query($connection, $query);
confirm_query($a3);
$results = array();
while ($a4 = mysqli_fetch_array ($a3)) {
$results[] = $a4;
}
return $results;
}
while ($a4 = mysqli_fetch_array ($a3)) {
return $a4;
}
您还必须更改打印以打印所有结果。您只能从函数返回第一个结果:
function search_transactions_ln($x){
global $connection;
$query = "SELECT ALL * ";
$query .= "FROM transactions ";
$query .= "WHERE last_name = '{$x}' ";
$query .= "LIMIT 50";
$a3 = mysqli_query($connection, $query);
confirm_query($a3);
$results = array();
while ($a4 = mysqli_fetch_array ($a3)) {
$results[] = $a4;
}
return $results;
}
while ($a4 = mysqli_fetch_array ($a3)) {
return $a4;
}
将其更改为:
return $a3;
您还应该使用准备好的语句,而不是直接向查询中注入变量,因为您有sql注入问题
function search_transactions_ln($x){
global $connection;
$query = "SELECT ALL * ";
$query .= "FROM transactions ";
$query .= "WHERE last_name = '{$x}' ";
$query .= "LIMIT 50";
$a3 = mysqli_query($connection, $query);
confirm_query($a3);
$ans =array();
while ($a4 = mysqli_fetch_array ($a3)) {
$ans[] = $a4;
}
return $ans;
}
在调用php文件中:
if(isset($_POST['submit'])) {
$last_name = $_POST["ln"];
$found_transaction_array = search_transactions_ln($last_name);
foreach($found_transaction_array as $a){
// do your task
}
您确实应该避免使用全局变量。。这是个坏习惯