2014-01-15 107 views
2

我创建了要求用户以添加一个特定的行: 名字,姓氏,地点,状态回声从MySQL数据库

一段时间后,我已经收到5个输入。 mysql表名为users和表格数据如下:

id first_name location status 
== ========== ======== ======== 
1 Chris  UK  Married 
2 Anton  Spain Single 
3 Jacob  UK  Single 
4 Mike  Greece Married 
5 George  UK  Married 

此外,我通过POST方法接收输入的方式。所以:

$firstname=$_POST['FIRST_NAME']; // First Name: <input type="text" name="FIRST_NAME"> 
$location=$_POST['LOCATION']; // Location: <input type="text" name="LOCATION"> 
$status=$_POST['STATUS']; // Status: <input type="text" name="STATUS"> 

我创建一个查询,选择从英国所有用户都结婚了:

$query = "SELECT * FROM users WHERE location='UK' AND status='Married'"; 
$result = mysqli_query($dbc,$query); //$dbc is the connection to my database 

$row = mysqli_fetch_array($results, MYSQLI_BOTH); 

换句话说:

id first_name location status 
== ========== ======== ======== 
1 Chris  UK  Married 
5 George  UK  Married 

问题:

1) $ row数组如下所示:

$row= array(
array(1 Chris UK Married), 
array(5 George UK Married) 
); 

2)如何在实现筛选后回显数据库的内容WHERE location ='UK'AND status ='Married'?

我需要它是这样的:

Hello Chris! You are from UK and you are married! 

Hello George! You are from UK and you are married! 

我知道,我必须使用foreach循环(回声阵列),但我已经尝试过了,它不的我试过的东西work.One是这是我在php.net发现:

与列表()开箱嵌套数组

(PHP 5> = 5.5.0)

PHP 5.5添加到迭代能力一个数组数组,并通过提供一个list()作为值将嵌套数组解压缩成循环变量。

例如:

<?php 
$array = [ 
[1, 2], 
[3, 4], 
]; 

foreach ($array as list($a, $b)) { 
// $a contains the first element of the nested array, 
// and $b contains the second element. 
echo "A: $a; B: $b\n"; 
} 
?> 

当我使用上述我收到以下错误:

Parse error: syntax error, unexpected T_LIST in C:\wamp\www.... 

任何建议?

据我所知,我不知有该ID与其他数据预先链接..

感谢。

+0

你需要循环用于获取所有数据,而($行= mysqli_fetch_array($结果,MYSQLI_BOTH)){回声$行[“身份证” ]。 //所有其​​他} –

+0

对于问题1:如果你想知道某些东西的结构,你可以使用['var_dump'](http://php.net/var_dump),例如。 'var_dump($ row)' – TiiJ7

回答

2

你可以使用这样的事情:

$query = "SELECT * FROM users WHERE location='UK' AND status='Married'"; 
$result = mysqli_query($dbc,$query); 

while($row = mysqli_fetch_array($result, MYSQLI_BOTH)){ 
    printf("Hello %s! You are from %s and you are %s!\n", $row['first_name'], $row['location'],$row['status']); 
} 
+0

但是,如果我没有错,如果我这样做,它只会返回数组的第一行。那是我最初的问题。这就是为什么我问是否有一种方法来链接该行与ID以创建一个循环返回所有行。 – christostsang

+0

@ user3185108它将显示所有过滤的数据。不仅仅是第一行,除非你只有1个输入的过滤数据。 –

+0

你是对的!谢谢您的帮助!我已经尝试过,但没有奏效!也许我做错了什么!再次感谢! – christostsang

0

问题2:

"SELECT OUTPUT = "Hello" + name + "! You are from UK and you are married!" FROM users WHERE location='UK' AND status='Married'"; 
1

mysqli_fetch_array返回单行你可以在SQL查询本身我想补充的格式。您需要循环才能获取所有行。您可以从该行获得的价值,并将其放置在这样的字符串:

while($row = mysqli_fetch_array($results, MYSQLI_BOTH)){ 
    echo "Hi ".$row['first_name'] . " You are from ".$row['location']." and you are ".$row['status']."!"; 
}