使用while循环输出的mysqli搜索只返回一条记录

时间:2013-12-26 14:43:05

标签: php mysqli

只是学习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.
    }                  
}

3 个答案:

答案 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;
}

您还必须更改打印以打印所有结果。

相关问题