2017-02-21 48 views
0

我有4个下拉列表,其中包括从数据库中检索到的值,然后基于这些值的选择我运行第二个SQL查询以显示所有相关数据选择。其中是我的代码中的错误,使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

try var_dum p($ _ POST ['site_name'])检查真实内容 – scaisEdge

+0

我试过你的答案,它显示从下拉列表中选择的值 –

回答

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

@ Melvin Koopmans抱歉失踪的报价,但存在,我没有应付它的* * var_dump($ site_name)**它工作正常,并返回选定的值,但问题是,查询不需要这个变量和比较我不知道为什么以及如何解决这个问题 –