Как извлечь данные из базы данных и отобразить их в таблице

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

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

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

Примечание: преобразование массива в строку

веб-страница отображает ошибку

<?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 retrieve 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 }  ?>

Вторая часть кода предназначена для извлечения данных из базы данных и включения их в раскрывающийся список.

Я буду признателен за любую помощь.

0

Решение

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

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

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

…который вы позже пытаетесь повторить. Вы просто не можете отображать массивы.

Просто измените вышеприведенные строки, вместо этого:

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

Замечания: Как уже отмечали другие, ваш код широко открыт для SQL-инъекций. Вы должны действительно избежать ваших данных, прежде чем использовать их в любых запросах.

2

Другие решения

<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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector