у меня есть 4 выпадающих списка, которые включают значения, извлеченные из базы данных, а затем на основе выбора этих значений я запускаю второй запрос SQL, чтобы отобразить все связанные данные для выбора.
я знаю, что это проблема в области видимости переменной, но я не знаю, как это исправить.
пример: у меня есть переменная $ site_name который используется в раскрывающемся списке
<td><select id="site_name" name = "site_name">
<?php
global $site_name;
$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>";
}
?>
эта переменная проверяется в верхней части кода с помощью если isset
if(isset($_POST['site_name']))
{
echo "inside site name";
$site_name=$_POST['site_name'];
}
else { $site_name=""; }
затем эта переменная должна сравниваться в запросе SQL, чтобы связать выбор пользователя с именем поля в базе данных MYSQL.
$query_submit =$wpdb->get_results ("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 = '".$site_name."');
когда я пытаюсь заменить $ site_name по значение из базы данных все работает.
так что я знаю, что проблема в $ site_name переменная.
если кто-нибудь может мне помочь, я буду признателен за это.
Похоже, вы не закрываете запрос. Начинается с « и вы заканчиваете с ‘.
'".$site_name"'
=> '".$site_name"'"
Если это не сработает, вы могли бы сделать var_dump($site_name)
и посмотри что вернет?
Кроме того, не вставляйте опубликованное значение прямо в базу данных, как это. Сначала подготовьте запрос, а затем отправьте его в базу данных.
$sql = $wpdb->prepare("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"'");
$results = $wpdb->get_results( $sql );
Других решений пока нет …