使用 PHP 从 MYSQL 获取数据 returns 无结果
Get data from MYSQL using PHP returns no results
所以我正在使用本教程:https://www.simplifiedcoding.net/android-mysql-tutorial-to-perform-basic-crud-operation/ 尝试从我的本地 MYSQL 服务器(使用 Wamp64)获取数据。一开始我有未定义的索引错误,我使用 isset() 语句修复了它。
但现在它只是 returns:
{"result":[]}
但是,我在那个数据库的集合列中有很多数据。
这是代码:
<?php
//Getting the requested klas
$klas = isset($_GET['klas']) ? $_GET['klas'] : '';
//Importing database
require_once('dbConnect.php');
//Creating SQL query with where clause to get a specific klas
$sql = "SELECT * FROM lessen WHERE klas='$klas'";
//Getting result
$r = mysqli_query($con,$sql);
//Pushing result to an array
$result = array();
while ($row = mysqli_fetch_array($r)) {
array_push($result,array(
"id"=>$row['id'],
"klas"=>$row['klas'],
"dag"=>$row['dag'],
"lesuur"=>$row['lesuur'],
"les"=>$row['les'],
"lokaal"=>$row['lokaal']
));
}
//Displaying the array in JSON format
echo json_encode(array('result'=>$result));
mysqli_close($con);
?>
我试用了
SELECT * FROM lessen WHERE klas='$klas'
我的数据库中的语句似乎 return 正确的数据。
知道是什么原因造成的吗?
提前致谢!
使用此代码
<?php
$klas ='';
if(isset($_GET['klas']) && !empty($_GET['klas']))
{
$klas = $_GET['klas'];
require_once('dbConnect.php');
$sql = 'SELECT * FROM lessen WHERE klas="'.$klas.'"';
$r = mysqli_query($con,$sql);
$result = array();
while ($row = mysqli_fetch_array($r)) {
array_push($result,array(
"id"=>$row['id'],
"klas"=>$row['klas'],
"dag"=>$row['dag'],
"lesuur"=>$row['lesuur'],
"les"=>$row['les'],
"lokaal"=>$row['lokaal']
));
}
echo json_encode(array('result'=>$result));
mysqli_close($con);
}
?>
点 1 是:
isset
函数只检查 klas
是否在 $_GET
全局数组中设置。因此,如果 $klas
以某种方式为空 - 您的查询将 return 为空( 不会给出错误 )。
所以请检查 $_GET
中的值,并可能从访问它的地方检查。或者您可以添加条件以避免像 --
这样的空查询
if (!empty($_GET['klas'])) {
// rest of the code block upto return
点 2 是:
你提到如果你回显 sql 它 returns
SELECT * FROM lessen WHERE klas=''{"result":[]}
此处的第二部分 (JSON) 来自于在代码末尾回显结果。所以对于第一部分(即回显 $sql
)我们看到 klas=''
。如上所述,这实际上进入了 Point 1。
所以最后你必须检查为什么 $_GET
处的值显示为空白。这将解决您的问题。
更新:
来自@GeeSplit 的评论对于请求
"GET /JSON-parsing/getKlas.php?=3ECA"
$_GET['klas']
中将没有任何内容,因为 url 中的查询字符串不包含任何键。
因此,要么您必须更改调用文件的来源。或者您可以更改获取 klas
.
值的方式
示例:
$tmpKlas = $_SERVER['QUERY_STRING'];
$klas = ltrim($tmpKlas, '=');
您的其余代码将起作用。
所以我正在使用本教程:https://www.simplifiedcoding.net/android-mysql-tutorial-to-perform-basic-crud-operation/ 尝试从我的本地 MYSQL 服务器(使用 Wamp64)获取数据。一开始我有未定义的索引错误,我使用 isset() 语句修复了它。 但现在它只是 returns:
{"result":[]}
但是,我在那个数据库的集合列中有很多数据。 这是代码:
<?php
//Getting the requested klas
$klas = isset($_GET['klas']) ? $_GET['klas'] : '';
//Importing database
require_once('dbConnect.php');
//Creating SQL query with where clause to get a specific klas
$sql = "SELECT * FROM lessen WHERE klas='$klas'";
//Getting result
$r = mysqli_query($con,$sql);
//Pushing result to an array
$result = array();
while ($row = mysqli_fetch_array($r)) {
array_push($result,array(
"id"=>$row['id'],
"klas"=>$row['klas'],
"dag"=>$row['dag'],
"lesuur"=>$row['lesuur'],
"les"=>$row['les'],
"lokaal"=>$row['lokaal']
));
}
//Displaying the array in JSON format
echo json_encode(array('result'=>$result));
mysqli_close($con);
?>
我试用了
SELECT * FROM lessen WHERE klas='$klas'
我的数据库中的语句似乎 return 正确的数据。 知道是什么原因造成的吗?
提前致谢!
使用此代码
<?php
$klas ='';
if(isset($_GET['klas']) && !empty($_GET['klas']))
{
$klas = $_GET['klas'];
require_once('dbConnect.php');
$sql = 'SELECT * FROM lessen WHERE klas="'.$klas.'"';
$r = mysqli_query($con,$sql);
$result = array();
while ($row = mysqli_fetch_array($r)) {
array_push($result,array(
"id"=>$row['id'],
"klas"=>$row['klas'],
"dag"=>$row['dag'],
"lesuur"=>$row['lesuur'],
"les"=>$row['les'],
"lokaal"=>$row['lokaal']
));
}
echo json_encode(array('result'=>$result));
mysqli_close($con);
}
?>
点 1 是:
isset
函数只检查 klas
是否在 $_GET
全局数组中设置。因此,如果 $klas
以某种方式为空 - 您的查询将 return 为空( 不会给出错误 )。
所以请检查 $_GET
中的值,并可能从访问它的地方检查。或者您可以添加条件以避免像 --
if (!empty($_GET['klas'])) {
// rest of the code block upto return
点 2 是:
你提到如果你回显 sql 它 returns
SELECT * FROM lessen WHERE klas=''{"result":[]}
此处的第二部分 (JSON) 来自于在代码末尾回显结果。所以对于第一部分(即回显 $sql
)我们看到 klas=''
。如上所述,这实际上进入了 Point 1。
所以最后你必须检查为什么 $_GET
处的值显示为空白。这将解决您的问题。
更新:
来自@GeeSplit 的评论对于请求
"GET /JSON-parsing/getKlas.php?=3ECA"
$_GET['klas']
中将没有任何内容,因为 url 中的查询字符串不包含任何键。
因此,要么您必须更改调用文件的来源。或者您可以更改获取 klas
.
示例:
$tmpKlas = $_SERVER['QUERY_STRING'];
$klas = ltrim($tmpKlas, '=');
您的其余代码将起作用。