2017-02-27 7 views
0

私はWordpressでPHPとMYSQLを使用していますが、ユーザの選択に基づいてデータベースからデータを取得していますが、 。私は$ wpdbクラスを使用していますデータベースから必要なデータを取得するためにselectクエリを使用していません

(()get_resultsを準備する)

しようとしたが、コードをデバッグするために、クエリをエコー、それが右の変数を割り当てますデータベース内の値とユーザーの入力値との比較を行うために使用します。

SQLクエリ:

$sql = $wpdb->prepare("select i.siteID 
     , i.siteNAME 
     , i.equipmentTYPE 
     , c.latitude 
     , c.longitude 
     , c.height 
     , o.ownerNAME 
     , o.ownerCONTACT 
     , x.companyNAME 
     , y.subcontractorCOMPANY 
     , y.subcontractorNAME 
     , y.subcontractorCONTACT 
     from site_info i 
     LEFT 
     JOIN owner_info o 
     on i.ownerID = o.ownerID 
     LEFT 
     JOIN company_info x 
     on i.companyID = x.companyID 
     LEFT 
     JOIN subcontractor_info y 
     on i.subcontractorID = y.subcontractorID 
     LEFT JOIN site_coordinates c 
     on i.siteID=c.siteID 
     where 
     i.siteNAME = %s 
     AND 
     o.ownerNAME = %s 
     AND 
     x.companyNAME = %s 
     ",$site_name,$owner_name,$company_name); 
    echo $site_name; 
    $query_submit =$wpdb->get_results($sql); 

foreach ($query_submit as $obj) { 
      echo "query is working"; 
    echo "<table width='30%' "; 
echo  "<tr>"; 
echo   "<td>".$obj->siteNAME."</td>"; 
echo   "<td>".$obj->ownerNAME."</td>"; 
echo   "<td>".$obj->companyNAME."</td>"; 
echo   "<td>".$obj->subcontractorNAME."</td>"; 
echo   "<td>".$obj->siteID."</td>"; 
echo   "<td>".$obj->equipmentTYPE."</td>"; 
echo   "<td>".$obj->latitude."</td>"; 
echo   "<td>".$obj->longitude."</td>"; 
echo   "<td>".$obj->height."</td>"; 
echo   "<td>".$obj->ownerCONTACT."</td>"; 
echo   "<td>".$obj->subcontractorCONTACT."</td>"; 
echo   "<td>".$obj->subcontractorCOMPANY."</td>"; 
echo  "</tr>"; 
echo "</table>"; 
    } 

私は、SQL

エコー$ sqlをエコーし​​ようとしたコードをデバッグするために、 右側の変数に割り当てられている値を持つsqlクエリが表示されます。

私のエラーはどこにありますか? trying to debug

supposed returned data

私は、クエリを変更し、%sのの代わりに文字列として値をつけた後、私は上記の結果を得ました。 は配列ですが、文字列を置くと正常に動作するため、問題が発生していないことを認識しました。 私はこのエラーになります変換しないので、私は、文字列を配列に変換しています:私は配列として選択したデータを取得するために、クエリで反復したことが起こっていた私の問題を解決し

Xdebug: Fatal error: Uncaught Error: Cannot use object of type stdClass as array in /opt/lampp/htdocs/wordpress/wp-content/themes/wp-portfolio/search-info.php:245 Stack trace: #0 /opt/lampp/htdocs/wordpress/wp-includes/template-loader.php(74): include() #1 /opt/lampp/htdocs/wordpress/wp-blog-header.php(19): require_once('/opt/lampp/htdo...') #2 /opt/lampp/htdocs/wordpress/index.php(17): require('/opt/lampp/htdo...') #3 {main} thrown in /opt/lampp/htdocs/wordpress/wp-content/themes/wp-portfolio/search-info.php on line 245. Output triggered in /opt/lampp/htdocs/wordpress/wp-content/plugins/query-monitor/collectors/php_errors.php on line 163 
+0

ポストをプレーンテキストでのクエリ。あなたが返すと信じているデータを表示します。 –

+0

@PaulSpiegel私は質問を編集し、返さなければならないと思われるデータを追加することを理解していませんでした –

+0

@Strawberry何を求めていますか? –

答えて

0

。 この私が使っていたコード:

   <?php 


       $query_site_name =$wpdb->get_results ("select DISTINCT siteNAME from site_info"); 
        foreach($query_site_name as $site_name) 
        { 
        $site_name = (array)$site_name; 
        echo "<option value = '{".$site_name ['siteNAME']."}'>". $site_name['siteNAME']."</option>"; 
        } 
      ?> 

にそれになるので、私は、オブジェクトへの配列から、反復プロセスを変更:

<?php 


        $query_site_name =$wpdb->get_results("select DISTINCT siteNAME from site_info"); 
         foreach($query_site_name as $site_name) 
         { 
      //   $site_name = (array)$site_name; 
         echo "<option value = '".$site_name ->siteNAME."'>". $site_name->siteNAME."</option>"; 
         } 
       ?> 
関連する問題