2012-03-20 74 views
6

如何使用PHP將MySQL數據庫錶轉換爲JSON數據。有沒有辦法做到這一點?如何在json中使用php轉換mysql數據庫表數據

下面是PHP代碼我使用:

<?php 
$host = "emriphone.db.6420177.hostedresource.com"; 
$user = "emriphone"; 
$pass = "Light12-"; 
$database = "emriphone"; 

$linkID = mysql_connect($host, $user, $pass) or die("Could not connect to host."); 
mysql_select_db($database, $linkID) or die("Could not find database."); 

$sth = mysql_query("SELECT * FROM ProviderAppointmentListings"); 
$rows = array(); 
while($r = mysql_fetch_assoc($sth)) { 
    $rows[] = $r; 
} 
print json_encode($rows); 
?> 
+0

如果向我們展示建議的json數據格式,那將會很好。一般來說@Secator是對的。 – Minras 2012-03-20 11:17:03

+0

你會得到什麼錯誤? – greut 2012-03-20 11:53:01

+0

@greut調用未定義的函數:json_encode() – 2012-03-20 11:59:44

回答

12

嘗試這樣的:

if (!function_exists('json_encode')) 
{ 
    function json_encode($a=false) 
    { 
    if (is_null($a)) return 'null'; 
    if ($a === false) return 'false'; 
    if ($a === true) return 'true'; 
    if (is_scalar($a)) 
    { 
     if (is_float($a)) 
     { 
     // Always use "." for floats. 
     return floatval(str_replace(",", ".", strval($a))); 
     } 

     if (is_string($a)) 
     { 
     static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"')); 
     return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"'; 
     } 
     else 
     return $a; 
    } 
    $isList = true; 
    for ($i = 0, reset($a); $i < count($a); $i++, next($a)) 
    { 
     if (key($a) !== $i) 
     { 
     $isList = false; 
     break; 
     } 
    } 
    $result = array(); 
    if ($isList) 
    { 
     foreach ($a as $v) $result[] = json_encode($v); 
     return '[' . join(',', $result) . ']'; 
    } 
    else 
    { 
     foreach ($a as $k => $v) $result[] = json_encode($k).':'.json_encode($v); 
     return '{' . join(',', $result) . '}'; 
    } 
    } 
} 
+0

致命錯誤:調用未定義的函數:json_encode()在此給出錯誤使用此代碼 – 2012-03-20 11:16:50

+0

[''json_encode'](http://php.net/manual/de/function.json-encode.php)需要PHP 5.2。 0+。你使用什麼版本? – 2012-03-20 11:19:55

+0

服務器版本:5.0.91-log這是我的數據庫上給出的,我正在使用 – 2012-03-20 11:23:46

0

我猜你的意思是在一個MySQL數據庫表右側的數據?

在這種情況下,看看PHP的json_encode()

您可以將數據從數據庫中獲取到數組中,然後將其轉換爲JSON。

0

把查詢結果集到一個數組,然後使用json_encode

$query = mysql_query("SELECT * FROM table"); 
$rows = array(); 
while($row = mysql_fetch_assoc($query)) { 
    $rows[] = $row; 
} 
print json_encode($rows); 

如果你沒有json_encode上面的代碼之前添加此

$sql="Select * from table"; 
$l= array(); 
$result = mysql_query($sql); 
while ($row = mysql_fetch_assoc($result)) { 
    $l[] = $row; 
} 
$j = json_encode($l); 
echo $j; 

您可以使用id表作爲數組的索引。

+0

我已經使用這個,但同樣的錯誤 – 2012-03-20 11:42:31

+0

你必須升級php或安裝http ://pecl.php.net/package/json,看看版本http://php.net/manual/en/function.json-encode。php – wdog 2013-03-06 10:12:08

0
<?php 
    $username = "user_name"; 
    $password = "password"; 
    $host = "url"; 
    $database="database"; 

    $server = mysql_connect($host, $username, $password); 
    $connection = mysql_select_db($database, $server); 

    $myquery = "SELECT date,close FROM data2"; 
    echo "hi"; 
    $query = mysql_query($myquery); 

    if (! $query) { 
     echo mysql_error(); 
     die; 
    }  
    $data = array();  

    for ($x = 0; $x < mysql_num_rows($query); $x++) { 
     $data[] = mysql_fetch_assoc($query); 
    } 

    echo json_encode($data);  

mysql_close($server); 

?> 

此代碼將phpmyadmin中的mysql數據轉換爲json。完美的作品

+0

PHPMyAdmin是一個爲MySQL數據庫後端提供管理UI的應用程序,而不是數據託管平臺本身。此外,OP沒有提及PHPMyAdmin。 – 2014-10-07 19:24:27

+0

如果我們沒有將日期格式化爲適當的ISO格式,像Java這樣的編程語言在客戶端應用程序解析時如何檢測它? – Satyam 2015-03-25 18:25:36

0

使用此代碼:

json_encode($array) 

例如:

public function SELECT($tableName,$conditions){ 

     $connection = mysqli_connect($hostname, $userName, $password,$dbName); 
     try { 

     if (!$connection) 
      die("Connection failed: " . $connection->connect_error); 
     else 
     { 
      $qry = ""; 
      if(!$this->IsNullOrEmptyString($conditions)) 
       $qry = "SELECT * FROM `".$tableName."` WHERE ".$conditions; 
      else 
       $qry = "SELECT * FROM `".$tableName."`"; 

      $result = mysqli_query($connection, $qry); 
      if($result) { 
       $emparray = array(); 
       while($row =mysqli_fetch_assoc($result)) 
        $emparray[] = $row; 

       echo(json_encode($emparray));   
      } 
      else 
       echo(mysqli_error($connection));  
      } 
      mysqli_close($connection); 
     } catch(Exception $ex) { 
      mysqli_close($connection); 
      echo($ex->getMessage()); 
     } 
}