2017-02-17 143 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

这是... 。 什么? –

相关问题