我有一个PHP json_encode函数的问题.它将数字编码为字符串,例如
array('id' => 3)
Run Code Online (Sandbox Code Playgroud)
变
"{ ["id": "3", ...)
Run Code Online (Sandbox Code Playgroud)
当js遇到这些值时,它会将它们解释为字符串,并且数值操作会失败.有谁知道一些方法来防止json_encode编码数字作为字符串?谢谢!
我想在MySQL中将结果表转换为JSON数组,最好只使用普通的MySQL命令.例如查询
SELECT name, phone FROM person;
| name | phone |
| Jack | 12345 |
| John | 23455 |
Run Code Online (Sandbox Code Playgroud)
预期的JSON输出将是
[
{
"name": "Jack",
"phone": 12345
},
{
"name": "John",
"phone": 23455
}
]
Run Code Online (Sandbox Code Playgroud)
有没有办法在普通的MySQL中做到这一点?
编辑:
有一些答案如何使用例如MySQL和PHP,但我找不到纯MySQL解决方案.
我有一个mysqli查询,我需要格式化为移动应用程序的json.
我已经设法为查询结果生成一个xml文档,但是我正在寻找更轻量级的东西.(请参阅下面的我当前的xml代码)
任何帮助或信息都非常感谢人们!
$mysql = new mysqli(DB_SERVER,DB_USER,DB_PASSWORD,DB_NAME) or die('There was a problem connecting to the database');
$stmt = $mysql->prepare('SELECT DISTINCT title FROM sections ORDER BY title ASC');
$stmt->execute();
$stmt->bind_result($title);
// create xml format
$doc = new DomDocument('1.0');
// create root node
$root = $doc->createElement('xml');
$root = $doc->appendChild($root);
// add node for each row
while($row = $stmt->fetch()) :
$occ = $doc->createElement('data');
$occ = $root->appendChild($occ);
$child = $doc->createElement('section');
$child = $occ->appendChild($child);
$value = $doc->createTextNode($title);
$value = $child->appendChild($value);
endwhile;
$xml_string = $doc->saveXML();
header('Content-Type: …Run Code Online (Sandbox Code Playgroud) 我想在PHP中将结果数组转换为JSON格式.这是我的代码:
$row = mysql_fetch_array($result)
Run Code Online (Sandbox Code Playgroud)
我想转换$row为JSON格式并将JSON数据传递给jQuery插件.
我从数据库中获取一些数据并将其编码为json:
$json = "";
if($result = $dbc->query($query)) {
$num = $result->num_rows;
for($i = 0; $i < $num; $i++) {
$row = $result->fetch_array();
$json .= json_encode($row);
if($i != ($num-1)) {
$json .= ',';
}
}
}
Run Code Online (Sandbox Code Playgroud)
但不是以格式获取json字符串:
{"name:"joe", "age":"22", "etc":"etc"}
Run Code Online (Sandbox Code Playgroud)
我得到的每个值都是重复的,因为它给了我元素名称作为关联和非关联数组的索引.所以我得到了:
{"0":"joe", "name":"joe", "1":"22", "age":"22", "3":"etc", "etc":"etc"}
Run Code Online (Sandbox Code Playgroud)
虽然我仍然可以使用json.它仍然是我想要它的两倍大小,因此效率不高.无论如何,我可以让json_encode方法只给我关联数组作为json标签?(毫无疑问,用错误的词语来描述这些事情)
非常感谢
有人可以建议如何在PHP中启用json_encode函数吗?
我有一个干净的Centos 5.6安装,刚刚安装了Virtualmin.
有谁知道接下来的步骤?
这是我在jQuery AJAX调用期间调用的PHP代码:
<?php
include '../code_files/conn.php';
$conn = new Connection();
$query = 'SELECT Address_1, Address_2, City, State, OfficePhone1, OfficePhone2, Fax1, Fax2, Email_1, Email_2
FROM clients WHERE ID = ?';
$conn->mysqli->stmt_init();
$stmt = $conn->mysqli->prepare($query);
$stmt->bind_param('s', $_POST['ID']);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
echo json_encode($row);
?>
Run Code Online (Sandbox Code Playgroud)
客户端代码是:
$.post(url, {ID:$('#ddlClients').val()},
function(Result){
// Result
}
);
Run Code Online (Sandbox Code Playgroud)
AJAX调用已成功完成.我得到的值,结果为
"{"Address_1":"Divisional Office 1","Address_2":"The XYZ Road",.....and so on
我想要的是能够使用返回的值,如Result.Address_1,Result.Address_2等.但我不能使用上面的代码.我试着用$row = $result->fetch_object()和$row = $result->fetch_array(),但没有用.
我知道这可以通过服务器端的代码完成:
$row = $result->fetch_assoc();
$retVal = array("Address_1"=>$row['Address_1'], "Address_2"=>$row['Address_2'].......);
echo …Run Code Online (Sandbox Code Playgroud) PHP中是否有函数或类可以传递MySQL记录集,并且我返回一个JSON字符串,可以传递回Ajax请求中的JavaScript函数?
这样的事情:
function recordSetToJson($recordset) {
while($rs1 = mysql_fetch_row($recordset)) {
for($count = 0; $count < count($rs1); $count++) {
// read and add field to JSON
}
$count++;
}
return $jasonstring
}
Run Code Online (Sandbox Code Playgroud) 在发布问题之前,我花了几个小时查看几个类似的答案.
我正在从我的数据库中的表中检索数据,我想将其编码为JSON.但是,json_encode()的输出仅在表有一行时才有效.如果有多行,则http://jsonlint.com/上的测试会返回错误.
这是我的查询:
$result = mysql_query($query);
$rows = array();
//retrieve and print every record
while($r = mysql_fetch_assoc($result)){
$rows['data'] = $r;
//echo result as json
echo json_encode($rows);
}
Run Code Online (Sandbox Code Playgroud)
这让我得到以下JSON:
{
"data":
{
"entry_id":"2",
"entry_type":"Information Relevant to the Subject",
"entry":"This is my second entry."
}
}
{
"data":{
"entry_id":"1",
"entry_type":"My Opinion About What Happened",
"entry":"This is my first entry."
}
}
Run Code Online (Sandbox Code Playgroud)
当我在http://jsonlint.com/上运行测试时,它会返回以下错误:
Parse error on line 29:
..."No comment" }}{ "data": {
---------------------^
Expecting 'EOF', '}', ',', ']' …Run Code Online (Sandbox Code Playgroud) 我正在尝试从MySQL结果创建一个json对象,但没有得到我需要的结果.
这是PHP
$json = array();
$result = mysqli_query ($connection, $query);
echo '[';
while($row = mysqli_fetch_array ($result))
{
echo '{';
echo '"latitude":"'.$row['lat'].'",';
echo '"longitude":"'.$row['lng'].'",';
echo '"icon":'.'"./images/'.$row['busColor'].'.png"';
echo '}';
}
echo ']';
$jsonstring = json_encode($json);
echo $jsonstring;
die();
Run Code Online (Sandbox Code Playgroud)
它输出这个
[{"latitude":"39.976257","longitude":"-83.003464","icon":"./images/pink.png"}][]
Run Code Online (Sandbox Code Playgroud)
但我想要这个
[{"latitude":"39.976257","longitude":"-83.003464","icon":"./images/pink.png"}]
Run Code Online (Sandbox Code Playgroud)
一旦我得到结果,我需要将对象传递给jQuery插件函数,如果这有任何区别
$.getJSON('myJsonURL, function(myMarkers){
$("#map").goMap({
markers: myMarkers
});
});
Run Code Online (Sandbox Code Playgroud)
谢谢