【问题标题】:Passing JSON to Array in PHP在 PHP 中将 JSON 传递给数组
【发布时间】:2014-10-01 20:18:57
【问题描述】:

我正在开发一个过滤器,可以立即过滤结果,我想知道这是否可能是问题的原因,所以我想我会问一下,看看是否有人可以给我一个关于如何继续的指针.

      <script>
        var services = [
 <?php
//Variables for connecting to your database.
//These variable values come from your hosting account.
$hostname = "###";
$username = "###";
$dbname = "###";

//These variable values need to be changed by you before deploying
$password = "###";
$usertable = "###";
$url = "permalink";
$title = "Address";
$amount = "rent";
$id = "id";
$status = "Beds";
$nonprofit = "Address";

//Connecting to your database
mysql_connect($hostname, $username, $password) OR DIE ("He's dead Jim");
mysql_select_db($dbname);

//Fetching from your database table.
$query = "SELECT * FROM $usertable";
$result = mysql_query($query);

if ($result) {
    while($row = mysql_fetch_array($result)) {
        $url = $row["$url"];
        $title = $row["$title"];
        $amount = $row["$amount"];
        $id = $row["$id"];
        $status = $row["$status"];
        $nonprofit = $row["$nonprofit"];

        echo '{"permalink": "';
        echo "{$url}";
        echo '",';
        echo '"title": "';
        echo "{$title}";
        echo '",';
        echo '"amount":';
        echo "{$amount}";
        echo ',';
        echo '"id": "';
        echo "{$id}";
        echo '",';
        echo '"status": "';
        echo "{$status}";
        echo '",';
        echo '"address": "';
        echo "{$address}";
        echo '",';
        echo '},';

    }
}
?>       

]
                //]]>
      </script>


  <script id="template" type="text/html">
       <a title="{{title}}" href="{{permalink}}">
         <div class="fs_box hide-for-small-down">
           <div class="fs_left">
             <span class="fs_head">{{title}}</span>
             <span class="fs_id"><img src="images/{{id}}.jpg" width="75%" height="75%" onError="this.onerror=null;this.src='images/logo.png';"></span>
       <span class="fs_status">{{status}}</span>
             <span class="fs_disc">{{address}}</span>
           </div>
           <div class="fs_price">${{amount}}+</div>
           <div class="clear"></div>
        </div>
      </a>
    </script> 

我希望它会产生一堆结果,然后这些结果是页面其他地方的过滤标准。 当我目前尝试将其作为 php 代码时,它输出正常。但是,当我在 php 文件中尝试它时,它应该进入它不会产生任何结果。还是它不喜欢在脚本中? 感谢您的帮助!

【问题讨论】:

  • 为什么要在php脚本前加[?您可以在php中创建一个数组,使用json_encode将数组编码为json。
  • @user3980820 我将 JSON 放在其中,或者我可以将 SQL 创建一个数组,然后将该数组放在 [ ] 之间?
  • mysql_query 是一个过时的接口,不应在新应用程序中使用,并将在未来的 PHP 版本中删除。像PDO is not hard to learn 这样的现代替代品。如果您是 PHP 新手,PHP The Right Way 之类的指南可以帮助您解释最佳实践。
  • 另外,你有什么理由不使用json_encode 方法来创建JSON,而不是做这个完全无效的版本?这不会正确地转义任何东西,并且可能会产生很多无效的 JSON 输出。
  • 我去看看 json_encode 感谢您的建议!

标签: php mysql json database


【解决方案1】:

您可以使用json_decodejson_encode 将数组转为json 并将json 转回数组。

还有人可能会提到你不应该在 PHP 中使用 mysql_* 函数,因为它们已经被贬值了。

类似这样的:

 <?php
//Variables for connecting to your database.
//These variable values come from your hosting account.
$hostname = "###";
$username = "###";
$dbname = "###";

//These variable values need to be changed by you before deploying
$password = "###";
$usertable = "###";
$url = "permalink";
$title = "Address";
$amount = "rent";
$id = "id";
$status = "Beds";
$nonprofit = "Address";

//Connecting to your database
mysql_connect($hostname, $username, $password) OR DIE ("He's dead Jim");
mysql_select_db($dbname);

//Fetching from your database table.
$query = "SELECT * FROM $usertable";
$result = mysql_query($query);

if ($result) {
    $results = array()
    while($row = mysql_fetch_array($result)) {
        $results[] = $row;
    }

    $json =  json_encode($results);
}
?>       

]

<script>
    var services = <?php echo $json; ?>;
</script>

这将为您提供一个用于在脚本中呈现的 json 对象。

【讨论】:

  • 值得将问题中给出的示例转换为使用内置 JSON 函数的版本。以这种方式表达会更简洁,并且具有实际工作的额外好处。
  • 我已经编辑了我的答案以使用 json_encode 构建一些 json
【解决方案2】:

您保存的文件是什么扩展名? 如果它不是 .php 或设置为呈现 php 的扩展名,那么您只会将代码显示为测试。 您可能想在 db connect 之后取出“die”语句。这看起来像您在 .js 文件中运行 php,因此您可能希望整个文件写出而不是停止,因为您无法连接到数据库(或至少给出 0 个结果,可能是警告)

【讨论】:

  • 它不是一个 JavaScript 文件。它只是在页面上呈现&lt;script&gt; 标记时运行。
猜你喜欢
  • 2018-02-02
  • 2018-01-18
  • 2012-01-26
  • 2015-01-12
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
相关资源
最近更新 更多