2017-02-17 23 views
0

Я использую WordPress и глобальный класс $ wpdb, чтобы получить данные из базы данных MySQL и отобразить результаты в таблице.Как получить данные из базы данных и отобразить их в таблице

У меня есть раскрывающийся список, который позволяет пользователю выбирать необходимые входы, а затем на основе выбранных входов система отображает все связанные данные для выбора пользователя.

Когда я пытаюсь запустить код его отображения ошибок:

Примечание: Массив для преобразования строки

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 Injection – Option

+0

Возможный дубликат [Ссылка -? Что эта ошибка означает в PHP] (http://stackoverflow.com/questions/12769982/reference-what-does -this-error-mean-in-php) –

+0

да, я знаю, что мне нужно знать, чтобы иметь возможность извлекать требуемые данные, чем я буду точно настраивать код, чтобы предотвратить внедрение SQL и другие возможные атаки. –

ответ

2

Вы можете избавиться от «Преобразование массива в строку» Ошибка довольно проста.

В этих строках, вы создаете массивы:

$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 \ '' <- Здесь у вас неправильный тип котировок.(или, вернее, вы используете backticks, когда вы должны использовать кавычки). Используйте значения '' 'вокруг значений. Вот сообщение, в котором объясняется, когда использовать что: 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

И это ... . какие? –

 Смежные вопросы

  • Нет связанных вопросов^_^