где в моем коде ошибка, из-за которой перестает работать SQL-запрос

у меня есть 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 переменная.

если кто-нибудь может мне помочь, я буду признателен за это.

0

Решение

Похоже, вы не закрываете запрос. Начинается с « и вы заканчиваете с .

'".$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 );
0

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

Других решений пока нет …

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