2015-12-30 3 views
0

У меня есть вопрос о MySQL в PHP.Как вернуть mysql_fetch_array в функцию

Это мой конфигурационный код:

<?php 

class Core{ 

    public $connect; 

public function __construct(){ 
    $host = 'localhost'; 
    $user = 'root'; 
    $password = ''; 
    $database = 'fix'; 
    $this->connect = new mysqli($host,$user,$password,$database); 
    if(!$this->connect) echo mysql_error(); 
    } 

    public function siteTitle(){ 
    $title = "title"; 
    $tagline = "tagline"; 
    return $title. " - ".$tagline; 
    } 

    public function load($file,$data){ 
     extract($data); 
     require "$file.php"; 
    } 

    public function searchResult(){ 
     $query = $this->connect->query("SELECT * FROM `location`"); 
     if($query->num_rows > 0){ 
      $columns = $query->fetch_assoc(); 
      return $columns;  
     } 
    } 



    public function locationStatus($id){ 
     $location = $this->searchResult(); 
     $locationId = $location['id']; 
     if($locationId == 1){ 
      echo "Available <i class='ui icon circle green'></i>"; 
     }elseif($locationId == 2){ 
      echo "Under Counstruction <i class='ui icon circle orange'></i>"; 
     }else{ 
      echo "Unavailable <i class='ui icon circle red'></i>"; 
     } 

    } 


} 


?> 

Я отобразит результат SEARCHRESULT() функция в searchResult.php файле:

 <div style='border:1px solid #ccc; padding:3px;'> 
     <img src="asset/images/<?php echo "$data[image].jpg"; ?>" class='ui image medium' style='padding-right:10px;float:left' /> 
     <h2 style='font-family:nexa;color:rgb(36,162,217);line-height:0;'><?php echo $data['title']; ?></h2> 
     <h4><span style='color:orange;'>Location Address: </span><?php echo $data['subtitle']; ?></h4> 
     <p><?php echo $data['description']; ?></p> 
     <br /> 
     <p> 
     <i class='ui icon marker big orange'></i>Checkin: <?php echo $data['checkin']; ?> &nbsp;&nbsp;&nbsp;<i class='ui icon clock big orange'></i>Published at: <?php echo $data['published']; ?>&nbsp;&nbsp;&nbsp; Status: <?php echo $this->locationStatus($data['id']); ?> 
     </p> 
     <a style='' href='location/<?php echo $data['slug']; ?>' class='ui button blue'>READ MORE</a> 

</div> 

И в searchResult.php, я называю это в Index.php с кодом:

<?php echo $this->load('templates/searchResult', $this->searchResult()); ?> 

Мой вопрос:

Почему результат моего запроса sql не является циклом? Хотя, я зацикливал его на цикл while?

Спасибо. Извините, если мой язык плохой.

+0

Проверьте метод 'searchResult()' ** Нет цикла while ** – RiggsFolly

+0

Да, какой 'while' цикл? вероятно, тот, который для '$ data' –

+0

@RiggsFolly, извините, перед кодом, который я разделяю, код с while, если нет, но это не работает цикл. – filosofikode

ответ

1

Если вы хотите позвонить на ваш взгляд, как этот

<?php 
    echo $this->load('templates/searchResult', $this->searchResult()); 
?> 

Вы должны будете поместить цикл в методе searchResult(), так что этот один вызов возвратит все строки.

public function searchResult(){ 
    $query = $this->connect->query("SELECT * FROM `location`"); 

    $rows = array(); 

    if($query->num_rows > 0){ 
     while ($row = $query->fetch_assoc()) { 
      $rows[] = $row; 
     } 
    } 
    return $rows;  
} 

Затем в Вью, петли над $data

+0

Хорошо, его работы! Спасибо – filosofikode

+0

В качестве альтернативы 'while', [fetch_all] (http://php.net/manual/en/mysqli-result.fetch-all.php) можно использовать с параметром' resulttype' как 'MYSQLI_ASSOC', например: '$ rows = $ query-> fetch_all (MYSQLI_ASSOC);'. – FirstOne

0
public function searchResult(){ 
    $query = $this->connect->query("SELECT * FROM `location`"); 
    if($query->num_rows > 0){ 
     while ($columns = $query->fetch_assoc()) 
     { 
      $data[] = $columns; 
     } 
    } 
    return $data; 
} 

Вам нужен цикл, а в функции SEARCHRESULT.

+0

Хорошо, спасибо за ответ: D – filosofikode

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