CodeIgniter - MySQL цикл - PullRequest
       2

CodeIgniter - MySQL цикл

0 голосов
/ 23 сентября 2011

Я относительно опытный разработчик PHP.

Я выбрал платформу CodeIgniter.Пока я понял, как это используется.До сих пор я хочу иметь возможность делать цикл while.

Внутри моего контроллера у меня есть:

$this->load->model('Test');
$data['result'] = $this->Test->getInfo();
$this->load->view('index1', $data);

В моей модели у меня есть:

$result = mysql_query("SELECT * FROM users WHERE last_name='Hart'")or die(mysql_error());  
$row = mysql_fetch_array( $result );    
return $row;

И в моем представлении:

echo $result[0];

Однако, это выводит только первое поле в первой найденной строке.

Пожалуйста, не могли бы вы помочь мне с извлечением информации из базы данных - цикл while.

Есть ли цикл модели в модели?Правильно ли я повторяю результат?

Ответы [ 2 ]

9 голосов
/ 23 сентября 2011

На самом деле есть гораздо более простой способ сделать то, что вы хотите сделать, используя класс ActiveRecord, который включает CodeIgniter, который позволит вам просто вернуть массив результатов.Вот документация .

Ваша модель станет такой:

$this->db->where('last_name','Hart');
$result = $this->db->get('users');
return $result->result_array();

Возможно, вам также придется настроить базу данных в application/config/database.php, а также загрузить класс базы данных вapplication/config/autoload.php:

$autoload['libraries'] = array('database');

Чтобы отобразить эту информацию, при правильном использовании шаблона MVC ваш контроллер должен передать информацию, полученную от модели, в представление.Чтобы сделать это, как правило, вы делаете это:

$data['myinfo'] = $this->test->getInfo();
$this->load->view('test_view',$data);

Затем вам нужно создать представление, подобное этому в applications/views/test_view.php:

<h1>Some HTML goes here</h1>
<?php
foreach($myinfo as $row) {
    echo $row['field'];
}
?>
<p>Some more HTML goes here</p>

Я предлагаю вам прочитать Пользователь CodeIgniterРуководство перед погружением в создание приложения, поскольку CodeIgniter включает библиотеки, которые значительно упрощают и ускоряют весь процесс.

0 голосов
/ 23 сентября 2011

Ну, mysql_fetch_array будет возвращать только одну строку за раз, так что вам нужно будет поместить цикл while вокруг вызова mysql_fetch_array

Что-то вроде

while($row = mysql_fetch_array($result)) { //save/process data }

Однако я бы просто использовал библиотеки codeigniters для загрузки БД и затем использовал бы ее:

$this->load->database();<br> $result = $this->db->query("SELECT * FROM users WHERE last_name='Hart'");<br> $result = $result->result_array();<br> //check for data and handle errors<br> return $result[0]

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