将Mysql结果传递给JSON

时间:2015-04-11 22:57:30

标签: javascript php mysql json

有人可以帮我解决一个小问题并解释一下会出现什么问题吗?我想要做的是从MySQL查询返回一个结果,并通过JSON传递它并显示该值。到目前为止我得到的是:

$qry = "SELECT first_name, last_name FROM user_profile";
$result = mysql_query($qry);

while($row = mysql_fetch_array($result)) {
    $name = $row['first_name'];     
}

我目前收到错误。

  

JSON.parse:JSON数据第1行第1列的意外字符

<div id="profile">
    <div id="photo-frame">
        <img class="circle" src="images/photo.jpg">
    </div>
        <h3 id="name"></h3>
</div>

<script type="text/javascript">

    var text =  <?php echo json_encode($name)?>;            
    var obj = JSON.parse(text);
    $('#name').text(obj.name);          

</script>

3 个答案:

答案 0 :(得分:1)

您的SQL查询“SELECT first_name,last_name FROM user_profile”没有任何WHERE子句可能会返回一维或二维数组。 当您使用json_encode对结果进行编码时,JSON字符串格式对于一维和二维数组将是不同的。 这将导致Javascript Part 中的头痛。

因此,如果这是针对单个配置文件 - 请勿使用JSON

PHP

$qry = "SELECT first_name, last_name FROM user_profile WHERE id = $id";
$result = mysql_query($qry);
if (mysql_num_rows($results) == 1) { 
   while($row = mysql_fetch_array($result)) {
     $name = $row['first_name'];  
   }
}  

如果这是针对多个配置文件

PHP

$qry = "SELECT first_name, last_name FROM user_profile";
$result = mysql_query($qry);
if (mysql_num_rows($results) > 0) {
   $jsonData = []; 
   $jsonData['profiles'] =  mysql_fetch_array($result)
   json_encode($jsonData, JSON_FORCE_OBJECT);
}  

HTML,JAVASCRIPT AND JQUERY

<div id="profile"></div>

<script>
  $(document).ready(function() {
    var data = <?php echo $jsonData;?>; 
    $.each(data.profiles, function() {
      $('#profile').append(
         '<div id="photo-frame">' +
            '<img class="circle" src="images/photo.jpg">' +
         '</div>' +
        '<h3 id="name">' + this.first_name + '&nbsp;' + this.last_name + '</h3>' + 
        '<hr/>'
      );
    }
  }
</script>

答案 1 :(得分:0)

这不是json你在$ name(它的平面文本)中尝试:

var text =  <?php echo $name; ?>;

但请记住,这不是一个好的编码风格php&gt; js&gt; html

删除&#34; obj&#34;部分。只是:

$('#name').text(text);

答案 2 :(得分:0)

我认为不需要在这里使用json,你可以简单地说:

<?php
$qry = "SELECT first_name, last_name FROM user_profile";
$result = mysql_query($qry);

while($row = mysql_fetch_array($result)) {
    $name = $row['first_name'];     
}

?>

<div id="profile">
    <div id="photo-frame">
        <img class="circle" src="images/photo.jpg">
    </div>
        <h3 id="name"></h3>
</div>

<script type="text/javascript">

    var text =  '<?=$name;?>';            
    $('#name').text(text);          

</script>