2012-06-20 5 views
0

Я пытаюсь отобразить результаты из 3 отдельных запросов в 3 смежных контейнерах <div>. Эти три запроса следующим образом:Руководство с несколькими PHP-запросами

$query="SELECT * FROM students WHERE WeekOne='employer'"; 
$query="SELECT * FROM students WHERE WeekTwo='employer'"; 
$query="SELECT * FROM students WHERE WeekThree='employer'"; 

Желаемая выход:

Первая неделя ----- Неделя вторая ----- Неделя третья

Результат 1 ----- ----- Результат 1 ----------- Результат 1

Результат 2 ---------- Результат 2 ----------- Результат 2 (и т.д.)

Может ли кто-нибудь помочь мне с этим? Я видел multi_query в руководстве PHP, но понятия не имею, как это реализовать. Большое спасибо.

@Emmanuel G

<? 

$user = "xx"; 
$user_password = "xx"; 
$db_name = "xx"; 
$db = new mysqli ("xx", $user, $user_password, $db_name); 

$queries = array(
    "SELECT * FROM students WHERE WeekOne='$Name'", 
    "SELECT * FROM students WHERE WeekTwo='$Name'", 
    "SELECT * FROM students WHERE WeekThree='$Name'" 
); 

// iterate through the queries and their results 
foreach($queries as $query){ 
    $result = $mysqli->query($query); 
    echo '<div>'; // open that div up 
    while($row = $result->fetch_assoc()){  // gives u an array hoorah! 
     echo '<pre>'.print_r($row, true).'</pre>'; // just to look at it 
     echo "<p>{$row['FirstName']}</p>";    // just an example 
    } 
    echo '</div>'; // close it up 
} 

?> 

ответ

0

Самого простой способ изменить запрос к этому:

$query="SELECT * FROM students WHERE WeekOne='employer' OR WeekTwo='employer' OR WeekThree='employer'"; 

А затем формат вывод соответственно.

+0

Как отформатировать вывод, хотя, если бы я сделал это, как это? Я хочу отобразить все данные для каждого запроса. –

+0

Вам нужно использовать циклы while, чтобы выводить данные запроса - это сайт Q & A, а не общий «научить меня программировать». :) Поймите несколько вещей и задайте конкретные вопросы, если вы застряли. –

0

Да, измените свой запрос, чтобы привести все результаты в один запрос, затем вы манипулируете результатом данных, ударив несколько раз для простого ответа на сервер, не является лучшей практикой, потому что ваш запрос очень прост.

но ваш вопрос

multi_query($query) //you can use this 

посмотрите здесь http://suite101.com/article/how-tor-run-multiple-mysql-queries-with-php-a105672

+0

Я не знаю, как можно манипулировать данными после отправки запроса ... Не могли бы вы предоставить дополнительную информацию? –

-1

Я предполагаю, что вы передаете работодателя в качестве параметра URL, так что в любом случае вы можете пройти которые week вы хотите сравнить с , скажем

$week = $_GET['weekOne']; 
$employer = $_GET['employer']; 

$query="SELECT * FROM students WHERE $week= $employer"; 

убедитесь, что вы escape ваших данных перед выполнением запроса, чтобы избежать SQL инъекций

Надеюсь, это поможет вам. Спасибо

+0

Только сделайте это, если хотите потерять все свои данные. http://en.wikipedia.org/wiki/SQL_injection – Cylindric

+0

изменен, счастлив? – Khurram

0

Чтобы отобразить его, просто перебирайте каждый отдельный результат и помещайте его в div. Чтобы сделать их смежными, вы добавили бы css в ваш div, чтобы плавать, поскольку divs по сути являются элементами блока и не выравниваются горизонтально без какой-либо помощи.

Предполагая, что у вас уже есть подключение к базе данных установлено и следует использовать MySQLi или такое можно сгенерировать разметку, как так:

// u should try to make this one query but that's irrelevant to the question 
// so I'll leave that to you to do later 
$queries = array(
    "SELECT * FROM students WHERE WeekOne='employer'", 
    "SELECT * FROM students WHERE WeekTwo='employer'", 
    "SELECT * FROM students WHERE WeekThree='employer'" 
); 

// iterate through the queries and their results 
foreach($queries as $query){ 
    if($result = $mysqli->query($query)){// only do stuff if you get a result 
     echo '<div>';         // open that div up 
     while($row = $result->fetch_assoc()){   // gives u an array hoorah! 
      echo '<pre>'.print_r($row, true).'</pre>'; // just to look at it 
      echo "<p>{$row['data']}</p>";    // just an example 
     } 
     echo '</div>';         // close it up 

     // mysqli free the result to prep for the next one 
     $result->free(); 
    } else { 
     echo "Query failed to return results:\n$query\n"; 
    } 
} 
+0

Спасибо за это, но это не работает для меня. Можете ли вы взглянуть на весь код и сообщить мне, где я ошибаюсь? Я добавил его в свой оригинальный пост. –

+0

Привет @PhilHowell. Мне жаль, что он не работает для вас. Я обновил свой ответ, чтобы проверить, не возвращает ли запрос результат, а также добавил free(), чтобы поддерживать правильное использование mysqli. Мой вопрос к вам заключается в том, действительно ли вы получаете какие-либо результаты или какие-либо ошибки при подключении к базе данных. – EmmanuelG

Смежные вопросы