2017-02-17 220 views
0

我正在使用WordPress和全局類$ wpdb以便從MySQL數據庫檢索數據並將結果顯示在表中。如何從數據庫中檢索數據並將其顯示在表中

我有4個下拉列表,允許用戶選擇所需的輸入,然後根據所選輸入系統顯示用戶選擇的所有相關數據。

當我嘗試運行它顯示錯誤的代碼:

通知:Array對字符串的轉換

web page display the error

的碼第一部分:

<?php 
    /* 
    Template Name: search info 
    */ 

    get_header(); 
    ?> 

    <?php 
    // code for submit button ation 
    global $wpdb,$_POST; 
//variables that handle the retrieved data from mysql database 
if(isset($_POST['site_name'])) 
     { 
     $site_name=$_POST['site_name']; 
     } 
     else { $site_name=""; } 

if(isset($_POST['owner_name'])) 
    { 
     $owner_name=$_POST['owner_name']; 
    } 
    else { $owner_name=""; } 

if(isset($_POST['Company_name'])) 
    { 
     $company_name=$_POST['Company_name']; 
    } 
    else { $company_name=""; } 

if(isset($_POST['Subcontractor_name'])) 
    { 
    $Subcontractor_name=$_POST['Subcontractor_name']; 
    } 
    else { $Subcontractor_name="";} 


$site_id = ['siteID']; 
$equipment_type = ['equipmentTYPE']; 
$lat=['latitude']; 
$long=['longitude']; 
$height = ['height']; 
$owner_contact = ['ownerCONTACT']; 
$sub_contact = ['subcontractorCONTACT']; 
$sub_company = ['subcontractorCOMPANY']; 


    if(isset($_POST['query_submit'])) 
    { 
//query to reteive all related info of the selected data from the dropdown list 
$query_submit =$wpdb->get_results ("select 

site_info.siteID,site_info.siteNAME ,site_info.equipmentTYPE,site_coordinates.latitude,site_coordinates.longitude,site_coordinates.height ,owner_info.ownerNAME,owner_info.ownerCONTACT,company_info.companyNAME,subcontractor_info.subcontractorCOMPANY,subcontractor_info.subcontractorNAME,subcontractor_info.subcontractorCONTACT from `site_info` 
LEFT JOIN `owner_info` 
on site_info.ownerID = owner_info.ownerID 
LEFT JOIN `company_info` 
on site_info.companyID = company_info.companyID 
LEFT JOIN `subcontractor_info` 
on site_info.subcontractorID = subcontractor_info.subcontractorID 
LEFT JOIN `site_coordinates` 
on site_info.siteID=site_coordinates.siteID 

where 
site_info.siteNAME = `$site_name` 
AND 
owner_info.ownerNAME = `$owner_name` 
AND 
company_info.companyNAME = `$company_name` 
AND 
subcontractor_info.subcontractorNAME = `$Subcontractor_name` 
"); 
?> 
    <table width="30%" > 
     <tr> 
      <td>Site Name</td> 
      <td>Owner Name</td> 
      <td>Company Name</td> 
      <td>Subcontractor Name</td> 
     </tr> 
     <tr> 
      <td><?php echo $site_name ; ?></td> 
      <td><?php echo $owner_name ; ?></td> 
      <td><?php echo $company_name ; ?></td> 
      <td><?php echo $Subcontractor_name ; ?></td> 
      <td><?php echo $site_id ; ?></td> 
      <td><?php echo $equipment_type ; ?></td> 
      <td><?php echo $lat ; ?></td> 
      <td><?php echo $long ; ?></td> 
      <td><?php echo $height ; ?></td> 
      <td><?php echo $owner_contact ; ?></td> 
      <td><?php echo $sub_contact ; ?></td> 
      <td><?php echo $sub_company ; ?></td> 


     </tr> 
    </table> 
    <?php } ?> 

第二部分代碼用於從數據庫檢索數據並將其包含在下拉列表中。

我會很感激任何幫助。

+1

你的代碼是在SQL注入的主要風險 – Option

+0

[參考? - 這是什麼錯誤PHP意味着]的可能的複製(http://stackoverflow.com/questions/12769982/reference-what-does -this-error-mean-in-php) –

+0

是的我知道我需要知道的是能夠檢索所需的數據比我會微調代碼以防止sql注入和其他可能的攻擊 –

回答

2

你可以擺脫「Array to string conversion」錯誤很容易。

在這些線路,要創建數組:

$site_id = ['siteID']; 
$equipment_type = ['equipmentTYPE']; 
$lat=['latitude']; 
... 
$sub_company = ['subcontractorCOMPANY']; 

...您稍後嘗試呼應。你根本無法回顯數組。

只要改變以上是字符串,而不是:

$site_id = 'siteID'; 
$equipment_type = 'equipmentTYPE'; 
$lat = 'latitude'; 
... 
$sub_company = 'subcontractorCOMPANY'; 

注:正如其他人已經指出的那樣,你的代碼是敞開的,以SQL注入。在任何查詢中使用它之前,你都應該真的逃避你的數據。

+0

我做了你在你的答案建議這個修復錯誤,但我仍然無法檢索請求的數據** ** query_submit ** –

+0

@NabilJaroush - '= \' $ site_name \''< - 您的引號類型錯誤。(或者說,當你應該使用引號時,你正在使用反引號)。使用'''圍繞值。這裏有一篇文章解釋何時使用什麼:http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks-in-mysql –

0
<table border="1"> 
<tr> 
<th>Firstname</th> 
<th>Lastname</th> 
<th>Points</th> 
</tr> 
    <?php 
    global $wpdb; 
    $result = $wpdb->get_results ("SELECT * FROM myTable"); 
    foreach ($result as $print) { 
    ?> 
    <tr> 
    <td><?php echo $print->firstname;?></td> 
    </tr> 
     <?php } 
+0

這是... 。 什麼? –

相關問題