Php Android Mysql-结果太多
我已经为这个问题挣扎了几天,没有任何进展。。。 我试图从我的数据库中只得到一个结果,但恰恰相反,我得到了整个表:( php: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 = $_
{
$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."'";