我的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;
所以脚本有效,它会从我找到字符串的电子邮件列中返回电子邮件。
但我有另一个问题,我的电子邮件列旁边有另一列名为location,每封电子邮件都对应一个位置值。所以我想在OUTPUT上看到2列。
这是我的专栏示例:
| email | location |
| john@gmail.com | Chicago |
| mike@gmail.com | Mexico |
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
感谢您的帮助。
答案 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>';
}