2014-01-15 4 views
2

Я создал форму, которая просит пользователя добавить: first_name, last_name, местоположение, статусEcho конкретные строки из базы данных MySQL

Через некоторое время я получил 5 входов. В таблице MySQL называется пользователей и данные таблицы, как показано ниже:

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 место = «UK» и статус = «Женат»?

мне нужно, чтобы это было так:

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

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

Я знаю, что я должен использовать цикл по каждому элементу (эхо-массивы), но я попробовал и оно не work.One вещей я попробовал было что-то я нашел в php.net:

Распаковка вложенных массивов со списком()

(PHP 5> = 5.5.0)

PHP 5.5 добавлена ​​возможность перебора массив массивов и распакуйте вложенный массив в переменные цикла, предоставив список() в качестве значения.

Например:

<?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.... 

Любые предложения?

Как я понимаю, я как-то связать идентификатор с другими данными ..

Спасибо заранее.

+0

вам нужен цикл для получения всех данных, в то время как ($ строки = mysqli_fetch_array ($ результатов, MYSQLI_BOTH)) {эхо $ строки [ «ID» ]; // all other} –

+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

Но если я не ошибаюсь, если я это сделаю, он вернет только первую строку массива. Это была моя первоначальная проблема. Вот почему я спрашиваю, есть ли способ связать строку с идентификатором, чтобы создать цикл для возврата всех строк. – christostsang

+0

@ user3185108 отобразит все отфильтрованные данные. не только первую строку, если только у вас есть только один вход отфильтрованных данных. –

+0

Вы правы! Спасибо за помощь! Я пробовал это до того, как вы сказали, но это не сработало! Может быть, я делал что-то неправильно! Еще раз спасибо! – christostsang

0

К вопросу 2: Вы можете добавить формат в самой я думаю, SQL-запрос:

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

mysqli_fetch_array возвращает одну строку. Вам понадобится цикл, чтобы получить все строки.Вы можете получить значение из строки и поместить его в строке, как:

while($row = mysqli_fetch_array($results, MYSQLI_BOTH)){ 
    echo "Hi ".$row['first_name'] . " You are from ".$row['location']." and you are ".$row['status']."!"; 
} 
Смежные вопросы