2017-06-09 3 views
0

外部のsqlデータベースから従業員リストを取得しようとしています。これは通常のPHPページを使用して取得していますが、これがうまくいくかどうか。sqlsrv_query外部データベースを使用してCodIgniterでforeachを使用してオフセットされた不正な文字列

私のcontroller.phpはこのように見えます。

class Patients extends CI_Controller { 

     function index() { 

      $data['title'] = 'Patients'; 

      $data['patients'] = $this->Patients_model->get_patients(); 

      $this->load->view('templates/header'); 
      $this->load->view('patients/index', $data); 
      $this->load->view('templates/footer');     

      print_r($data);  

     } 

私はそれが正しく出力して、私は以下の配列データを取得しなかったかどうかを確認するためにprint_r($data)を置くが、私のsqlsrv_queryとにかく、トップ30を宣言して以来は、単一のデータを返す以来の奇妙な。

Array ([title] => Patients [patients] => Array ([employee_i] => 3321 [first_name] => Zyriel [last_name] => Tanawan [labor_clas] => SD [current_de] => WORKSHOP - L.A [date_emplo] => 2016-04-06 00:00:00 [pay_code] => 06 [cost_cente] => 7723 [file_statu] => EMPLOYEE [middle_nam] => Martinez [vacation_l] => 11.0000 [sick_leave] => 0.0000 [line_code] => Facilities Workshop - Laguna [gender] => M [approver_1] => 950812 [approver_2] => 220364 [approver_3] => 940016 [leave_as_o] => 2017-05-19 00:00:00 [section_ma] => [rest_day1] => Sun [rest_day2] => [Current_po] => Machinist [Station] => Laguna)) 

これは私のモデルです.phpのようです。

class Patients_model extends CI_Model 
    { 
     public function get_patients(){ 


       $serverName = "MYSERVERNAME"; //serverName\instanceName 
       $connectionInfo = array("Database"=>"MYDATABASE", "UID"=>"USERID", "PWD"=>'MYPASSWORD'); 
       $conn = sqlsrv_connect($serverName, $connectionInfo); 
       if($conn === false) { 
        die(print_r(sqlsrv_errors(), true)); 
       } 

       $sql = "SELECT top 30 * from empmas ORDER BY first_name DESC"; 
       $stmt = sqlsrv_query($conn, $sql); 
       if($stmt === false) { 
        die(print_r(sqlsrv_errors(), true)); 
       } 


       return sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); 


     } 

} 
私のview.php

<?php foreach ($patients as $rows) :?> 

      <p><?php echo $rows['employee_i'];?></p><br/> 

      <?php endforeach;?> 

に今

しかし、私は

A PHPのエラーが発生しました

重大度以下のエラーが出ます:

警告メッセージ:不正な文字列オフセット 'employee_i'

私はすでに他の類似の質問からいくつかの回答を試みましたが、あなたが使用しているときには違って見えるsqlsrv_query助言が助けになるでしょう!ありがとう!

+0

'$のpatients'の値が何であるのに使用する必要がありますか?それは '$ data'か' $ data ['patients'] 'ですか?また、 'sqlsrv_fetch_array'はすべての行ではなく、次の行をフェッチします。その結果、おそらく1行の結果しか得られないのでしょう。 – ImClarky

答えて

0

コードに誤りがありますので、下記をご確認ください。あなたは$rows代わり$value

<p><?php echo $rows['employee_i'];?></p><br/> 
+0

私の質問はまだ修正・更新されていますが、「不正な文字列オフセットエラー」 – KaoriYui

+0

この行を追加してください。 (SQLSRV_FETCH_ASSOC '、2); '前の' 'sqlsrv_fetch_array($ stmt、SQLSRV_FETCH_ASSOC)を返す;' –

+0

は、依然として不正な文字列オフセットを提案しました。 – KaoriYui

関連する問題