在php

时间:2016-02-21 18:50:53

标签: php json string web

我必须制作一个网络服务。因此,我在互联网上提到了一些教程,并提出了以下代码

的index.php

<html>
<head>
    <title>Form page</title>
</head>

<body>

    <form action="http://localhost:81/my%20web%20service/webservice" method="get">
        Table name:<br>
        <input type="text" name="s" value=""><br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

webservice.php

<?php

    include('connectdb.php');

    $something = $_GET['s'];
    $sqlcode = mysql_query("Select * from $something");

    $jsonObj= array();
    while($result=mysql_fetch_object($sqlcode))
    {
        $jsonObj[] = $result;
    }

    $final_res =json_encode($jsonObj) ;
    echo $final_res;
?>

connectdb.php

<?php
    $hostname="localhost";
    $username="root"; //write your username
    $password=""; //write your password
    $db_name="webservice_trial"; //write your db name
    $con=mysql_connect($hostname,$username,$password);
    mysql_select_db($db_name,$con) or die ("Cannot connect the Database");
    mysql_query("SET NAMES 'utf8'",$con); 

?>

以上代码运行正常。 当我从form.php输入表的名称时,它将检索该特定表中的所有元组。

现在我想做的是在另一页上显示数据。 即我想将数据从webservice.php传输到另一个页面,从json格式。所以我编辑了我的webservice.php,如下所示

webservice.php

<?php

    include('connectdb.php');

    $something = $_GET['s'];
    $sqlcode = mysql_query("Select * from $something");

    $jsonObj= array();
    while($result=mysql_fetch_object($sqlcode))
    {
        $jsonObj[] = $result;
    }

    $final_res =json_encode($jsonObj) ;
    echo $final_res;

    $jsonArray = (array) json_decode($final_res);
    echo $jsonArray[0];

?>

它出现以下错误

[{"name":"hilton","town":"colombo","telephone":"774933705","description":"excellent"},{"name":"galadari","town":"colombo","telephone":"112894143","description":"best"},{"name":"mt. lavinia","town":"mt. lavinia","telephone":"773580324","description":"good"}]

捕获致命错误:第18行的C:\ xampp \ htdocs \ json_folder \ my web service \ webservice.php中无法将类stdClass的对象转换为字符串

2 个答案:

答案 0 :(得分:1)

您可以更改

$jsonArray = json_decode($final_res);

$jsonArray = json_decode($final_res, True);  

或者,要访问第一项的名称,请使用

print $jsonArray[0]->name;

答案 1 :(得分:0)

不要试图将解码后的字符串强制转换为数组,而是使用它,这是正确的方法。

schema.pre( query, function(next) {
  this.update( {}, { $inc: { __v : 1 } }, next);
})

现在,您将拥有一个数组,您可以$jsonArray = json_decode($final_res, TRUE); echo

var_dump

在你的问题中,你的错误说的是,你试图var_dump($jsonArray); 它作为一个变量,你试图回应的东西实际上是一个对象类。可能是因为它没有被类型化。

<强>建议:

  • 请停止使用echo个功能。它被弃用了。使用mysqlmysqli

  • 了解SQL注入。永远不要相信用户输入。始终消毒或使用准备好的陈述。