【发布时间】:2016-06-14 13:28:22
【问题描述】:
我正在使用 android volley 库从服务器上的数据库中获取记录。我从我的 android 应用程序向这个 php 脚本发送一个查询。当我自己在第 4 行编写查询时,如下 $myquery = "Select firstname from Student;";那么所有结果都会正确返回,但是当我直接发送查询时,它不会返回记录。我确定问题出在 php 脚本中,请帮助我在这个基本脚本中哪里出错了?
function showStudent()
{
global $connect;
$myquery = $_POST["query"];
$result = mysqli_query($connect,$myquery);
$number_of_rows = mysqli_num_rows($result);
$temp_array = array();
if($number_of_rows>0)
{
while( $row = mysqli_fetch_assoc($result) )
{
$temp_array[] = $row;
}
}
header('Content-Type: application/json');
echo json_encode(array("dataArray"=>$temp_array));
mysqli_close($connect);
}
?>
【问题讨论】:
-
您确定要通过用户输入接收查询吗??
-
实际上我已经创建了一个通用类供我使用,我只是在不同的类中更改查询,这就是为什么我将不同的查询发送到同一个脚本
-
您可能想要记录 $myquery 的内容以检查它是否正确。做类似 file_put_contents('/tmp/log', $myquery);
-
我明白了...但这也会使您的服务器容易受到查询攻击。想象一下有人发送类似 "DROP TABLE students" 或 "INSERT INTO users (login, password, is_admin) VALUES ('h4ck3r', '...', 1)"我> 。请记住,脚本调用并不难跟踪,用户可以通过浏览器控制台轻松输入值
-
@CarlosCarucce 实际上我想通过这个脚本做的是基于查询获取记录,所以如果我硬编码编写查询,那么我会编写许多脚本,例如一个用于选择所有记录的脚本,一个脚本用于根据“where”条件等获取记录。这就是为什么我有兴趣通过我的 android 应用程序发送查询并在 php 应用程序中接收它,这样只有这个脚本才能完成从数据库中获取记录的工作跨度>
标签: php android mysql android-volley