2016-01-15 29 views
1

我试图从mysql数据库获取值并从php创建json。但我总是得到“虚假”的答复。尝试编码json时出现错误php

我的查询运行正常。

<?php 
header("Content-type: text/html; charset=utf-8"); 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "test"; 
$charset="UTF8"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sth = mysqli_query("select 
    a.id, 
    a.fname, 
a.mname,a.lname,a.country,a.city,a.dob,a.role, 
    a.email, 
    b.mobile,b.skypeid,b.address,b.languages, 
c.height, 
c.width, 
c.skin, 
c.bust, 
c.waist, 
c.hips, 
c.shoesize, 
c.hair, 
c.eye, 
c.comments, 
d.movie, 
d.advertisement, 
d.brandpromotional, 
d.danceshow, 
d.runway, 
d.catalog, 
d.editorial, 
d.fit, 
d.casual, 
d.corporate, 
d.swimwear, 
d.fitness, 
d.magazine, 
d.lingerie, 
d.glamour, 
d.alternative, 
d.hair, 
d.legs, 
d.hands, 
d.webmodel, 
d.social, 
d.experience 

from 
    basicinfo a 
     join contactdetails b 
      on a.email=b.email 
     join measurements c 
      on a.email = c.email 
     join areainterest d 
on a.email=d.email 
where a.role='Model'"); 
$rows = array(); 
while($r = mysqli_fetch_assoc($sth)) { 
    $rows[] = $r; 
} 
print json_encode($rows); 
?> 

请帮我

+0

你什么你json_encode之前获得,当你'的var_dump($行)'对不对? –

+2

可能重复的[json \ _encode()返回false](http://stackoverflow.com/questions/19440529/json-encode-returns-false) –

+1

我得到这一个数组(0){} – Bangalore

回答

0

mysqli_query缺少连接参数,但因为你是new mysqli而不是mysqli_connect它看起来像你需要查询以不同的方式对数据......最简单的方法来更新您代码将做到这一点:

更改此:

$sth = mysqli_query("select 

要这样:

$sth = $conn->query("select 

然后改变这:

while($r = mysqli_fetch_assoc($sth)) { 

要这样:

while($r = $sth->fetch_assoc()) { 

PHP有三种不同的方式,你可以连接到数据库:面向对象的风格,程序风格或使用PDO。该代码混合了面向对象和程序风格,因此不能按预期工作。 mysqli_query也缺少第一个参数的链接变量。

在这里阅读更多:http://php.net/mysqli_query

1

这一项工作..

<?php 
header("Content-type: text/html; charset=utf-8"); 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "test"; 
$charset="UTF8"; 

// Create connection 
$connection = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($connection->connect_error) { 
    die("Connection failed: " . $connection->connect_error); 
} 

$sth = "select 
    a.id, 
    a.fname, 
a.mname,a.lname,a.country,a.city,a.dob,a.role, 
    a.email, 
    b.mobile,b.skypeid,b.address,b.languages, 
c.height, 
c.width, 
c.skin, 
c.bust, 
c.waist, 
c.hips, 
c.shoesize, 
c.hair, 
c.eye, 
c.comments, 
d.movie, 
d.advertisement, 
d.brandpromotional, 
d.danceshow, 
d.runway, 
d.catalog, 
d.editorial, 
d.fit, 
d.casual, 
d.corporate, 
d.swimwear, 
d.fitness, 
d.magazine, 
d.lingerie, 
d.glamour, 
d.alternative, 
d.hair, 
d.legs, 
d.hands, 
d.webmodel, 
d.social, 
d.experience 

from 
    basicinfo a 
     join contactdetails b 
      on a.email=b.email 
     join measurements c 
      on a.email = c.email 
     join areainterest d 
on a.email=d.email 
where a.role='Model'"; 
    $result = mysqli_query($connection, $sth) or die("Error in Selecting " . mysqli_error($connection)); 

    //create an array 
    $emparray = array(); 
    while($row =mysqli_fetch_assoc($result)) 
    { 
     $emparray[] = $row; 
    } 
    echo json_encode($emparray); 

    //close the db connection 
    mysqli_close($connection); 
?> 
相关问题