PHP和SQL,如何在输出中打印多个列

时间:2017-07-11 17:49:25

标签: php sql

我的php脚本需要帮助:

这是我的index.php:



<?php

error_reporting(E_ALL); ini_set('display_errors', 1);

$db_hostname = '127.0.0.1';
$db_username = 'root';
$db_password = 'password';
$db_database = 'mydatabase';


    $connect = mysqli_connect("$db_hostname","$db_username","$db_password");

    if (!$connect){

           die('Could not connect: ' . mysqli_error());
        
        }

    
    mysqli_select_db($connect, $db_database) or die ("could not find db");


    $output ='';



    if (isset ($_POST['search'])){

     $search = $_POST['search'];

   }


    $query = mysqli_query($connect, "SELECT * FROM user WHERE email LIKE '%$searchq%'") or die("could not search");

    $count = mysqli_num_rows($query);

    
    if($count == 0){

     $output = 'There was no search results !';

   }

    
    else{

         while($row = mysqli_fetch_array($query)){
         $fname = $row['email'];
         $output .='<div> '.$fname.'</div>';}

        }  


?>

<!DOCTYPE html>
<html lang="en">
  <head>
      <meta charset=utf-8" />
      <title>Lookup</title>
  </head>
  <body>

<form action="index.php" method="post">
<input type="text" placeholder="search" name="search">
<input type="submit" value=">>"/>

</form>



<?php

print("$output"); 

?>

  </body>
</html> 
&#13;
&#13;
&#13;

  • 所以脚本有效,它会从我找到字符串的电子邮件列中返回电子邮件。

  • 但我有另一个问题,我的电子邮件列旁边有另一列名为location,每封电子邮件都对应一个位置值。所以我想在OUTPUT上看到2列。

这是我的专栏示例:

| email | location |

| john@gmail.com | Chicago |

| mike@gmail.com | Mexico |

  • 所以这就是我在index.php上看到的结果: john@gmail.com mike@gmail.com donald@gmail.com roberto@gmail.com
  • 这就是我想看到的: john@gmail.com Tokyo mike@gmail.com London donald@gmail.com Paris roberto@gmail.com New-York

感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

你实际上已经非常接近你想要的了。关键在于while循环。

while($row = mysqli_fetch_array($query)){
    $fname = $row['email'];
    $loc   = $row['location'];
    $output .='<div>' . $fname . ' ' . $loc . '</div>';
}  

$row变量将包含您在查询中选择的每个列的条目。您在查询中使用select *,因此您可能会或可能不会意识到其中的所有内容。如果您想查看内容,可能会发现var_dump($row);有助于测试。

答案 1 :(得分:1)

你的其他部分应该是: -

else{

     while($row = mysqli_fetch_array($query)){
     $fname_location = $row['email']."  ".$row['location'];
     $output .='<div> '.$fname_location .'</div>';}

    } 

答案 2 :(得分:0)

更改此部分:

else{

     while($row = mysqli_fetch_array($query)){
     $fname = $row['email'];
     $output .='<div> '.$fname.'</div>';}

    }  

对此:

else{

     while($row = mysqli_fetch_array($query)){
     $fname = $row['email'];
     $ulocation = $row['location '];
     $output .='<div> '.$fname . ' ' . $ulocation.'</div>';}

    }  

答案 3 :(得分:0)

设置另一个变量$location以接收来自db的位置数据,就像设置$fname

一样
 while($row = mysqli_fetch_array($query)){
     $fname = $row['email'];
     $location = $row['location'];
     $output .='<div> '.$fname . ' ' . $location.'</div>';
 }