只是学习PHP并在搜索结果中输出多个值时遇到问题。
在具有相同姓氏的数据库中有多个事务,希望用户在搜索框中输入姓氏并获取所有事件,当前结构只给我一个。 Appreacite你的帮助。谢谢
在函数中有以下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);
while ($a4 = mysqli_fetch_array ($a3)) {
return $a4;
}
}
使用以下代码检索结果,包括$ _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.
}
}
答案 0 :(得分:1)
您只返回函数的第一个结果:
while ($a4 = mysqli_fetch_array ($a3)) {
return $a4;
}
将其更改为:
return $a3;
您还应该使用预准备语句,而不是直接将变量注入到查询中,因为您有SQL注入问题。
答案 1 :(得分:1)
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
}
答案 2 :(得分:0)
您只返回一个字符串而不是所有结果。
如果要打印所有这些,您必须先将它们收集到一个数组中并返回该数组。
您可能想要更改您的功能:
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;
}
您还必须更改打印以打印所有结果。