2017-03-18 33 views
3

我正在学习使用json的rest api并通过json数组检索值。我试图请求我的数据库是localhost。这个表包含两个值ID和状态,这两列都有整数值。类mysqli_result的对象无法转换为C: wamp www webservice_mine.php中的字符串

这是我做

http://localhost/webservice_mine.php?ID='1'&Status='2' 

的错误,我发现了请求

Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\wamp\www\webservice_mine.php on line 24

我想这是因为我传递一个整型变量的SQL查询。这是连接变量的错误吗?有人可以解释如何正确地做到这一点?这将是很大的帮助。

<?php 
      if((isset($_REQUEST["ID"]))&&(isset($_REQUEST["Status"]))){ 
      $servername = "localhost"; 
      $username = "root"; 
      $password = ""; 
      $dbname = "arduino_test"; 

      $jsonarray= array('Status' => false,'Message'=>"Empty"); 
      // Create connection 
      $conn = new mysqli($servername, $username, $password, $dbname); 
      // Check connection 
      if ($conn->connect_error) { 
       die("Connection failed: " . $conn->connect_error); 
       $jsonarray= array('Status' => false,'Message'=>"Database Not Connected"); 
       echo json_encode($jsonarray); 

      } 
      else{ 
       $jsonarray= array('Status'=>false,'Message'=>"Database connected"); 

       $sql = "SELECT * FROM `lights` WHERE ID=".$_REQUEST["ID"].""; 
       //$result = $conn->query($sql); 
       $result = $conn->query($sql); 
       echo $result; 
       $jsonarray= array('Status'=>false,'Message'=> $result); 



       if (($result = $conn->query($sql)) !== FALSE) 
      { 
       echo "query success"; 

       while($row = $result->fetch_assoc()) 
       { 
        echo "ID: " . $row["ID"]. " "; 
       } 
      } 
      else 
      { 
       echo "query failure"; 
       echo "Error: " . $sql . "<br>" . $conn->error; 
      } 

       // output data of each row 
       //while($row = $result->fetch_assoc()) { 
         //$jsonarray[] = $row; 


      //} 
       echo json_encode($jsonarray); 
      } 
     } 
?> 
+0

要查询两次 –

+0

是的,我注意到了:)谢谢:) –

回答

0

(抱歉不好英语)

$jsonarray= array('Status'=>false,'Message'=> $result); 

$result是一种资源,而不是一个数组

$data = array(); //empty array 

while($row = $result->fetch_assoc()) 
    { 
     $data[] = $row; //store each row in $data 
    } 

$jsonarray= array('Status'=>false,'Message'=> $data); 

你可以使用:

$data = $result->fetch_all(MYSQLI_ASSOC); 
//fetch all data from resource and return as associative array 

代替:

$data = array(); //empty array 

while($row = $result->fetch_assoc()) 
    { 
     $data[] = $row; //store each row in $data 
    } 

这是同样的结果,但更少的代码:)

+0

哦,谢谢你的解释:)它的工作现在即时得到的输出如下: 查询成功[{“ID”:“1”,“状态”:“1”},{“ID”:“1”,“状态”:“0”},{“ID”:“1”, “状态”:“1”}] –

+0

或者你可以使用fetch_all()从resurce中获取数据,它将返回一个关联数组:'$ data = $ result-> fetch_all()' –

+0

你是什么意思?关联数组? –

相关问题