我正在使用Intel XDK构建一个简单的应用程序,我需要将我的应用程序连接到mysql数据库。因为英特尔XDK不允许PHP文件,我需要通过javascrapt和json将我的html连接到php。
以下是我找到并编辑的PHP代码,它将PHP数组作为JSON对象发送到英特尔XDK应用程序:
<?php
if(isset($_GET["get_rows"]))
{
//checks the format client wants
if($_GET["get_rows"] == "json")
{
$link = mysqli_connect("localhost", "xxxx", "xxxx", "xxxx");
/* check connection */
if (mysqli_connect_errno()) {
echo mysqli_connect_error();
header("HTTP/1.0 500 Internal Server Error");
exit();
}
$query = "SELECT * FROM quotes LIMIT 1";
$jsonData = array();
if ($result = mysqli_query($link, $query)) {
/* fetch associative array */
while ($row = mysqli_fetch_row($result)) {
$jsonData = $row;
}
/* free result set */
mysqli_free_result($result);
//encode to JSON format
echo "<h1>" . json_encode($jsonData) . "</h1>";
}
else {
echo "<h1>" . json_encode($jsonData) . "</h1>";
}
/* close connection */
mysqli_close($link);
}
else
{
header("HTTP/1.0 404 Not Found");
}
}
else
{
header("HTTP/1.0 404 Not Found");
}
?>
我的index.html包含以下代码:
<head>
<script>
function GetQuote() {
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("quote").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET", "http://domain/db.php?get_rows=json", false);
xmlhttp.send();
}
</script>
</head>
<body onload="GetQuote()">
<div id="quote"> </div>
</body>
我的代码正常运行,我的应用显示了我表格中的最新一行。问题是这段代码返回整行,所以我在屏幕上得到这样的东西: [ “列1”, “列2”]。我需要的是“Column1”作为记录,“column2”作为记录。
任何可以帮助我的人?我整天都在研究这个问题而无法找到解决方案..谢谢!
这是我现在的代码:
<?php
if(isset($_GET["get_rows"]))
{
//checks the format client wants
if($_GET["get_rows"] == "json")
{
$link = mysqli_connect("localhost", "xxx", "xxxx", "xxxx");
/* check connection */
if (mysqli_connect_errno()) {
echo mysqli_connect_error();
header("HTTP/1.0 500 Internal Server Error");
exit();
}
$query = "SELECT quote, author FROM quotes WHERE id = " . date('d');
$jsonData = array();
if ($result = mysqli_query($link, $query)) {
/* fetch associative array */
$row = $result->fetch_assoc($result);
// Create a new array and assign the column values to it
// You can either turn an associative array or basic array
$ret= array();
$ret[] = $row['quote'];
$ret[] = $row['author'];
//encode to JSON format
echo json_encode($ret);
}
else {
echo json_encode($ret);
}
/* close connection */
mysqli_close($link);
}
else
{
header("HTTP/1.0 404 Not Found");
}
}
else
{
header("HTTP/1.0 404 Not Found");
}
?>
我现在只用[null,null]得到一个空屏幕..任何人都知道这段代码有什么问题?我尝试过调试,但我是PHP的新手,我无法让它工作..谢谢!
答案 0 :(得分:0)
尝试这样的事情
$query = "SELECT column1,column2 FROM quotes LIMIT 1";
$jsonData = array();
if ($result = mysqli_query($link, $query)) {
/* fetch associative array */
$row = $result->fetch_assoc($result);
// Create a new array and assign the column values to it
// You can either turn an associative array or basic array
$ret= array();
$ret['name1'] = $row['column1'];
$ret['name2'] = $row['column2'];
// Or you can simply use, comment the above two lines and uncomment the following two lines.
//$ret[] = $row['column1'];
//$ret[] = $row['column2'];
//encode to JSON format
echo json_encode($ret);
如果您在此处发现任何类型错误,请分享