首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与android通信时出现PHP未定义的索引错误

与android通信时出现PHP未定义的索引错误
EN

Stack Overflow用户
提问于 2013-05-08 18:40:17
回答 3查看 908关注 0票数 0

我正在从android的数据库中检索数据,因此创建了一个php文件,如下所示。

代码语言:javascript
运行
复制
    <?php

 $db_host  = "localhost";
 $db_uid  = "root";
 $db_pass = "";
 $db_name  = "abc";         
 $db_con = mysql_connect($db_host,$db_uid,$db_pass) or die('could not connect');
 mysql_select_db($db_name);
 $sql = "SELECT * FROM people WHERE  birthyear > '". $_POST["birthyear"]."'";
 $result = mysql_query($sql);
 while($row=mysql_fetch_assoc($result))
  $output[]=$row;
 print(json_encode($output));
 mysql_close();   
?>

现在,当我在浏览器中以localhost/script.php的身份运行它时,抛出了错误,输出显示如下

注意:未定义索引: C:\xampp\htdocs\jasonscript.php中第14行的出生年{"id":"1","name":"m","sex":"1"," birthyear ":"1989"},{"id":"2","name":"a","sex":"1","birthyear":"1986"},{"id":"3","name":"b","sex":"0","birthyear":"1986"}

请告诉我如何更正我的代码。

EN

回答 3

Stack Overflow用户

发布于 2013-05-08 18:42:31

代码语言:javascript
运行
复制
$output[]=array("key"=>$row['field_name'],"key1"=>$row['field_name2']);

像这样的存储数组

票数 2
EN

Stack Overflow用户

发布于 2013-05-08 18:45:09

您直接在查询中插入$_POST["birthyear"],这使您很容易受到SQL注入的攻击。现在就停止这样做吧!

这也是你得到错误的原因。当您在浏览器中直接调用脚本时,将使用GET请求,并且不会有任何POST变量可用。因此,您的$_POST数组不会有birthyear的键,因此它会警告您这一点。

你应该从下面这样的东西开始

代码语言:javascript
运行
复制
<?php
$by = isset($_POST["birthyear"]) ? $_POST["birthyear"] : "";
if (empty($by)) {
  echo 'Invalid birthyear';
  exit;
}

//SANITIZE YOUR BIRTHYEAR HERE
//in this case, probaly check for a integer between 1900 and 2100 or something.
//Although just an int could be enough to prevent injection

if (!is_int($by)) {
  echo 'You failed to provide a valid year';
  exit;
}

$sql = "SELECT * FROM people WHERE  birthyear > '". $by."'";

//execute the code 
?>

尽管上面的代码是安全的,但您应该像在mysqli prepared statementsPDO中使用的那样检查bound parameters

票数 1
EN

Stack Overflow用户

发布于 2013-05-08 18:45:56

你可能没能通过帖子正确地发送这些值。尝试使用print_r($_POST);查看您实际发送的内容

你仍然可以得到所有的结果,因为每年都是> ''

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16438535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档