2014-02-26 56 views
1

所以我尝试下载JSON成iOS应用程序,我真的不知道了很多关于PHP。PHP脚本选择MySQL的数据字段,并返回JSON

目前我使用的通用PHP纸条作为连接MySQL数据库,并返回JSON结果的代表。

<?php 
$host = "localhost"; //database host server 
$db = "***"; //database name 
$user = "root"; //database user 
$pass = "root"; //password 

$connection = mysql_connect($host, $user, $pass); 

//Check to see if we can connect to the server 
if(!$connection) 
{ 
    die("Database server connection failed."); 
} 
else 
{ 
    //Attempt to select the database 
    $dbconnect = mysql_select_db("***", $connection); 

    //Check to see if we could select the database 
    if(!$dbconnect) 
    { 
     die("Unable to connect to the specified database!"); 
    } 
    else 
    { 
     $query = "SELECT * FROM table"; 
     $resultset = mysql_query($query, $connection); 

     $records = array(); 

     //Loop through all our records and add them to our array 
     while($r = mysql_fetch_assoc($resultset)) 
     { 
      $records[] = $r;   
     } 

     //Output the data as JSON 

     echo json_encode($records); 

    } 


} 


?> 

这样做的问题是,我不想用JSON编码我只是想从特定表中返回一些特定的数据字段,所以我不下载不必要的数据整个表。

我知道你在SELECT查询做到这一点,但东西是错误与我的语法这一点。

我一直在试图用:

$query = "SELECT *[datafield],[otherdatafield],... FROM table"; 

但似乎并不奏效。

此外,在该表中有一些用于构建一个URL的图像两个独立的数据字段和林不知道如何使它们在JSON返回一个场中的两这里结合起来。

例如:我有一个基本字符串

"http://wwww.mysite.com/" 

,我想,这样,当它返回的JSON对象,他们已经连接在一起,使这些领域的两个数据字段的添加到字符串中的应用可以只使用URL:

"http://wwww.mysite.com/[data field1]/[datafield2]" 
+0

你使用'$记录[] = $ R;',因此'$ records'数组被reseted每读取行,导致只在最后一排被json_encoded。 – MichaelvdNet

+0

尝试在phpmyadmin或mysql工作台中测试你的sql – SpYk3HH

+0

@ SpYk3HH哦,对不起,我在PHP中不太好。 – MichaelvdNet

回答

1

查询获取个人的cols是

select col1,col2,col3 from table_name 

无需提供*像你这样

$query = "SELECT *[datafield],[otherdatafield],... FROM table"; 
       ^........here * is causing the problem. 
+0

* *事实上会使其失败。我自己总是在我的列名周围使用小波浪线。主要是喜欢干净的外观。'SELECT \'COLA \',''COLB \',''COLC \',''COLD \'FROM TABLE' – SpYk3HH

+0

当我尝试加载时,在浏览器中出现同样的错误:似乎没有任何与之相关的风格信息。文档树如下图所示。 Array [0] – DanR

+0

add header('Content-Type:text/json');在回声 –

2

查询你应该尝试像

$查询长相= “SELECT COL1,COL2 FROM表”; //无需星号的,如果你何况山坳名

现在,如果你需要两列在查询本身有结合,尝试像

$ query =“SELECT CONCAT('mysite.com /',col1,'/',col2)FROM table”;

“/” 是两列之间的分隔符。

+0

感谢工作,如何将我的“http://www.mysite.com/”字符串添加到开始? – DanR

+0

DanR,已经做了一些编辑检查ans现在.. – avisheks