【问题标题】:How to fix error Array to string conversion and display the fetched data如何修复错误数组到字符串的转换并显示获取的数据
【发布时间】:2017-02-20 08:10:28
【问题描述】:

我在 WordPress 上使用 MYSQL 和 PHP 以从数据库中检索数据,但使用 4 下拉列表允许用户进行选择,并且根据用户的选择,SQL 查询将检索所有相关数据。

问题是系统显示以下警告:

数组到字符串的转换

并且不要从数据库中检索任何内容。

注意:SQL查询正确,检索到所需数据(在phpmyadmin上测试)。

代码:

<?php
    /*
    Template Name: search info
    */

    get_header();
    ?>

    <?php
    // code for submit button action
    global $wpdb;
//variables that handle the retrieved data from mysql database based on the ID of the variable in HTML (select)


if(isset($_POST['query_submit']))
{

   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'];
//$site_id = (array)$site_id;
$equipment_type = ['equipmentTYPE'];
//$equipment_type = (array)$equipment_type;
$lat=['latitude'];
//$lat = (array)$lat;
$long=['longitude'];
//$long = (array)$long;
$height = ['height'];
//$height = (array)$height;
$owner_contact = ['ownerCONTACT'];
//$owner_contact = (array)$owner_contact;
$sub_contact = ['subcontractorCONTACT'];
//$sub_contact = (array)$sub_contact;
$sub_company =[ 'subcontractorCOMPANY'];
//$sub_company = (array)$sub_company;


//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`
 " , ARRAY_A);

// create a table  inside php code 

echo "<table width='30%' ";
echo     " <tr>";
echo         " <td>$query_submit ['siteNAME']</td>";
echo         " <td>$query_submit  ['ownerNAME']</td>";
echo         " <td>$query_submit  ['companyNAME']</td>";
echo         " <td>$query_submit ['subcontractorNAME']</td>";
echo         " <td>$query_submit ['siteID'] </td>";
echo         " <td>$query_submit ['equipmentTYPE'] </td>";
echo         " <td>$query_submit ['latitude'] </td>";
echo         " <td>$query_submit ['longitude'] </td>";
echo         " <td>$query_submit ['height']</td>";
echo         " <td>$query_submit ['ownerCONTACT']</td>";
echo         " <td>$query_submit ['subcontractorCONTACT']</td>";
echo         " <td>$query_submit ['subcontractorCOMPANY']</td>";
echo     "</tr>";
echo "</table>";
?>

【问题讨论】:

  • 尝试使用 var_dump 检查输出。使用var_dump($query_submit) 告诉我它的输出是什么。
  • 这是调用字符串的正确格式吗$query_submit ['ownerNAME']$query_submit['ownerNAME']之间有一个空格
  • 我试过 var_dump($query_submit) 它显示 array(0) { } 但我尝试在 phpmyadmin 中查询它返回所需的值
  • @NabilJaroush 问题出在$site_id = ['siteID']; 这里你使用数组作为字符串,因为错误就在这里。我无法弄清楚到底应该在那里。
  • 此字段将根据用户从 4 下拉列表中的选择处理多个值

标签: php mysql error-handling echo


【解决方案1】:

错误来自以下几行:

$site_id = ['siteID'];
//$site_id = (array)$site_id;
$equipment_type = ['equipmentTYPE'];
//$equipment_type = (array)$equipment_type;
$lat=['latitude'];
//$lat = (array)$lat;
$long=['longitude'];
//$long = (array)$long;
$height = ['height'];
//$height = (array)$height;
$owner_contact = ['ownerCONTACT'];
//$owner_contact = (array)$owner_contact;
$sub_contact = ['subcontractorCONTACT'];
//$sub_contact = (array)$sub_contact;
$sub_company =[ 'subcontractorCOMPANY'];

我不确定您是否从帖子中获取这些变量。如果您从帖子值中获取这些信息,请使用:

$site_id = $_POST['siteID'];
           ^^^use global variable

但我可以看到您在 $query_submit 数组变量中使用它。这意味着它来自db。

在这种情况下,您必须删除或注释这些行。

【讨论】:

  • 如果我删除这些行,我将如何显示检索到的数据
  • 您在执行查询之前正在使用这些行,因此这些行没有意义。删除这些行后尝试一次。
【解决方案2】:

在您的回声中调用字符串的方式不正确,您在$query_submit ['string'] 之间提供空格@ 像这样使用$query_submit['siteNAME'] 并且您的查询提交查询几乎没有变化:

    <?php
        /*
        Template Name: search info
        */

        get_header();
        ?>

        <?php
        // code for submit button ation
        global $wpdb;
    //variables that handle the retrieved data from mysql database based on the ID of the variable in HTML (select)


    if(isset($_POST['query_submit']))
    {

       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 = $_POST['siteID'];
    //$site_id = (array)$site_id;
    $equipment_type = $_POST['equipmentTYPE'];
    //$equipment_type = (array)$equipment_type;
    $lat=$_POST['latitude'];
    //$lat = (array)$lat;
    $long=$_POST['longitude'];
    //$long = (array)$long;
    $height = $_POST['height'];
    //$height = (array)$height;
    $owner_contact = $_POST['ownerCONTACT'];
    //$owner_contact = (array)$owner_contact;
    $sub_contact = $_POST['subcontractorCONTACT'];
    //$sub_contact = (array)$sub_contact;
    $sub_company =$_POST[ 'subcontractorCOMPANY'];
    //$sub_company = (array)$sub_company;


    $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."
     " , ARRAY_A);
    if($query_submit){
    echo "<table width='30%' ";
echo     "<tr>";
echo         "<td>".$query_submit->siteNAME."</td>";
echo         "<td>".$query_submit->ownerNAME."</td>";
echo         "<td>".$query_submit->companyNAME."</td>";
echo         "<td>".$query_submit->subcontractorNAME."</td>";
echo         "<td>".$query_submit->siteID."</td>";
echo         "<td>".$query_submit->equipmentTYPE."</td>";
echo         "<td>".$query_submit->latitude."</td>";
echo         "<td>".$query_submit->longitude."</td>";
echo         "<td>".$query_submit->height."</td>";
echo         "<td>".$query_submit->ownerCONTACT."</td>";
echo         "<td>".$query_submit->subcontractorCONTACT."</td>";
echo         "<td>".$query_submit->subcontractorCOMPANY."</td>";
echo     "</tr>";
echo "</table>";
    } else {
        echo "query is not worked";
    }

【讨论】:

  • @ Nawim 如果我删除空间我得到这个错误:解析错误:语法错误,意外''(T_ENCAPSED_AND_WHITESPACE),期望标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING )
  • 那么你使用$query_submit-&gt;siteNAME
  • 编辑答案...立即查看
  • 我试过你的答案,但没有任何改变,没有任何显示
  • 我试过你的回答它显示这个错误:解析错误:语法错误,意外''(T_ENCAPSED_AND_WHITESPACE),期望标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING) 因为 $query_submit['siteNAME'] 之间没有空格
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 2014-07-31
  • 2013-12-09
  • 2021-07-15
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多