2017-01-14 10 views
0

ここでいくつか試しましたが、どういうわけか後のアクションを実行するためにPHP経由でレコードを取得できないようです。基本的に私はステージングテーブル(WORKS)にレコードをロードしています。プロキシを呼び出してライブテーブル(WORKS)にマイグレーションしてから、イメージを生成するためにインポートされた各レコードをループするだけです。クエリをエコーし​​てWorkbench経由で実行すると、データが取り戻されてしまいますが、何とかPHPでクエリが何も返されない場合、何が欠けていますか?PHP/Mysql - ファイルとクエリレコードをロードする

public function import_members() { 
    $this->filepath=htmlspecialchars(strip_tags($this->filepath)); 

    $status = "success"; 
    $msg = ""; 

    $query = "LOAD DATA LOCAL INFILE '" . $this->filepath ."' INTO TABLE temp_imported 
      CHARACTER SET 'latin1' 
      FIELDS TERMINATED BY ',' 
      OPTIONALLY ENCLOSED BY '\"' 
      LINES TERMINATED BY '\\n' 
      IGNORE 1 LINES 
      (fname,lname,email,phone,address,city,province,postal,dob,member_no)"; 

      echo $query . "<br><br>"; 

      // EXECUTE LOAD - ON SUCCESS 
      if ($this->conn->query($query)) { 
       try { 
        // CALL PROC TO IMPORT DATA INTO LIB_MEMBERS 
        $stmt = $this->conn->query("CALL sp_import_members(@rowcount)"); 

        while ($row = mysqli_fetch_array($stmt)) { 
         $records = $row[0]; 
        } 

        mysqli_free_result($stmt); 
        $msg = "File was imported successfully! <br> A total of " . $records . " records were imported from your file" ; 
       } 
       catch (Exception $ex) { 
        $msg = $ex ; 
        $status = 'danger'; 
       } 

       echo $status . "<br><br>"; 

       if ($status == "success"){ 
        // GENERATE BARCODE IMAGES FOR IMPORTED 
        $querybar = "Select barcode from lib_members where barcode is not null and DATE(datein) = date(now())"; 
        echo $querybar . "<br><br>"; 

        $stmt2 = $this->conn->query($querybar); 
        $rownum = $stmt2->num_rows; 

        if ($rownum){ 
         echo $rownum; 
        } 
        else { 
         echo "NO"; 
        } 
       } 
      } 
      else { 
       $msg = "There was a problem importing your file"; 
      } 

      echo "<div style='width:40%; margin:0 auto; text-align:center; font-size:12px;' class='alert alert-". $status ."' role='alert'>" . $msg . "</div>"; 
     } 
} 

私の出力は現在、これを示しています

LOAD DATA LOCAL INFILE '/Users/DB/Sites/Scan_MASTER/imported/members.csv' INTO TABLE temp_imported CHARACTER SET 'latin1' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (fname,lname,email,phone,address,city,province,postal,dob,member_no) 

success 

Select barcode from lib_members where barcode is not null and DATE(datein) = date(now()) 

Notice: Trying to get property of non-object in /Users/db/Sites/Scan_MASTER/_members.php on line 590 

NO 

ライン590は

+0

質問にエラーがないかどうか確認してください。 –

+0

私はmysqli_error($ querybar)を試しましたが、何も戻ってこなかったので、私はrow_numオプションを試してみたのです。 Workbenchで「バーコードを選択」ステートメントを実行すると、レコードが正常に戻ってきているので、PHPのシーケンスに固有のように思えます。 – denisb

+1

'mysqli_error($ querybar)' - '$ querybar'そしてあなたは' $ this-> conn'をクエリの接続として使います。それらは一致しません。 mysqli_error()はクエリではなく接続引数を使用する必要があります。だからあなたは本当の誤りを得ていないのです。 –

答えて

0

を取得する方法を見つけることができたライン$this->conn->query($query)

+0

レコードがproc呼び出しに挿入されているように見えるので、自動コミットはデフォルトではnoです。 – denisb

+0

私は分かりません。おそらくいいえ。ちょうど試して。 – Stilet

+0

私は、結果を変更していませんでした...申し訳ありません。 – denisb

0

commitに試してみてください私の "NUM_ROWS" のラインで構成され両方のインスタンスで "query"メソッドを使用するのではなく、私のproc呼び出しにprepareとexecute文を使用することで問題を回避できます。かなりか理想的な修正ではないかもしれませんが、動作します。

関連する問題