Php Android Mysql-结果太多

Php Android Mysql-结果太多,php,mysql,Php,Mysql,我已经为这个问题挣扎了几天,没有任何进展。。。 我试图从我的数据库中只得到一个结果,但恰恰相反,我得到了整个表:( php: { $connect = @mysqli_connect ($host, $username, $pass, $dbname) OR die ('Could not connect to MySQL'); $table = $_REQUEST['table']; $key = $_REQUEST['id']; $key_value = $_

我已经为这个问题挣扎了几天,没有任何进展。。。 我试图从我的数据库中只得到一个结果,但恰恰相反,我得到了整个表:(

php:

{
   $connect = @mysqli_connect ($host, $username, $pass, $dbname)
   OR die ('Could not connect to MySQL');

   $table = $_REQUEST['table'];
   $key = $_REQUEST['id'];
   $key_value = $_REQUEST['id_value'];

   $q = "SELECT * FROM ".$table." where ".$key."='".$key_value."'";
   $r = @mysqli_query ($connect, $q);

   while ($row = mysqli_fetch_array($r))
      $output[]=$row;
   print(json_encode($output));
}
我认为没有必要向您展示我的android代码,因为数据接收良好(更新表也很好)……我只想从我的数据库中得到一个结果

在浏览器上导航到此文件时,显然没有问题。。。
提前感谢,干杯

您正在做类似于
的事情,其中1=1
始终是正确的。您没有命名列。您正在用数字替换它

试试这个(未经验证):


您正在执行类似于
的操作,其中1=1
,这始终是正确的。您没有命名列。您正在用数字替换它

试试这个(未经验证):


如果只想获得结果的第一行,则有两个选项:

  • 在查询中包括
    限制
    (首选解决方案)

    从“%$table.”中选择*其中“%$id.”=“%$id.”“限制1”

  • 不要循环获取所有数据,只需读取第一行并返回它


  • 如果只想获得结果的第一行,则有两个选项:

  • 在查询中包括
    限制
    (首选解决方案)

    从“%$table.”中选择*其中“%$id.”=“%$id.”“限制1”

  • 不要循环获取所有数据,只需读取第一行并返回它


  • 您正在将您的条件设置为
    其中“$id.”“=”“$id.”“;
    ,因此,如果您通过id=1,这将意味着:
    其中1=1
    ,这始终是true。这就是它返回所有记录的原因。

    您正在将您的条件设置为
    其中“$id.”“=”“$id.”;
    ,因此,如果您传递id=1,这将意味着:
    其中1=1
    ,这始终是真的。这就是它返回所有记录的原因

     $table = $_REQUEST['table'];
       $key = $_REQUEST['id'];
       $key_value = $_REQUEST['id_value'];
    
       $q = "SELECT * FROM ".$table." where ".$id."='".$id."'";
    
    您正在分配$key和$key\u值,但随后使用$id



    您正在分配$key和$key\u值,但随后使用$id.

    这将做什么?这与他已经在做的有什么不同?@juergend是正确的,这是不同的,原始的没有列id=$id,它有两个变量,所以它类似于:select*from table where 5=5;对不起,我的错误-没有读asker的代码编写得足够仔细。但是这对问题中的问题仍然没有帮助。我犯了上面的错误,当然程序是这样的:SELECT*FROM table where key='key\U value'但是即使使用关键字LIMIT 1,数组仍然返回所有表内容。即使我循环遍历结果,其他结果是如何得到的?数据库中的ID是uniqe for evry row…@user1167309在设置$q后,您能否输出$q的值,以确保它是正确的,这听起来像是一个奇怪的问题。这将做什么?它与他已经在做的有什么不同?@juergend是正确的,这是不同的,原始的没有列ID=$ID,它有变量ble两次,所以它将类似于:select*from table where 5=5;抱歉,我的错误-没有足够仔细地阅读询问者的代码。但是这仍然无助于解决问题。我犯了上面的错误,当然程序是这样的:select*from table where key='key\U value'但是即使使用关键字LIMIT 1,数组仍然会出现返回所有的表内容。即使我循环查看结果,其他结果是如何得到的?数据库中的ID是uniqe for evry row…@user1167309设置完$q后,你能输出它的值吗?只是为了确保它是正确的,这听起来是个奇怪的问题。不是答案,但你不应该运行任何旧的值是从中的请求传入的,因为有人恶意传入某些恶意内容。不是答案,但您不应该运行从中的请求传入的任何旧值,因为有人恶意传入某些恶意内容。读取第一行并返回它是不好的,因为您在数据库方面仍然有大量开销。我不知道我完全同意——这就是为什么我说(1)是首选的解决方案。实际上,可能有一些有效的情况,您需要查询整个表,然后只返回第一行:通常是当您需要对其余数据执行某些操作,但不需要显示它时。我不知道他的程序的逻辑,因此建议将此作为一个选项。读取第一行并返回这是不好的,因为在数据库方面仍然有很多开销是首选的解决方案。实际上,可能有一些有效的情况,您需要查询整个表,然后只返回第一行:通常是当您需要对其余数据执行某些操作,但不需要显示它时。我不知道他的程序的逻辑,所以建议将此作为一个选项。我犯了上面的错误,当然是program的格式为:SELECT*FROM table where key='key_value',但即使使用关键字LIMIT 1,数组仍然返回所有表内容..即使我循环遍历结果,其他结果是如何获得的?数据库中的ID是uniqe for evry row…我犯了上面的错误,当然程序的格式为:SELECT*FROM table wherekey='key\u value'但是,即使使用关键字LIMIT 1,数组仍然会返回所有表内容..即使我循环遍历结果,其他结果是如何得到的?数据库中的ID对于每行都是uniqe…我犯了上面的错误,当然,程序会是:SELECT*FROM table where key='key\u value',但是即使使用关键字限制1数组仍然返回所有表内容..即使我循环搜索结果,其他结果是如何得到的?数据库中的ID是uniqe for evry row…您可以执行
    echo$q
    查看查询的外观吗
     $table = $_REQUEST['table'];
       $key = $_REQUEST['id'];
       $key_value = $_REQUEST['id_value'];
    
       $q = "SELECT * FROM ".$table." where ".$id."='".$id."'";