【问题标题】:PhP MySQL "WHERE" query returns null / is empty [duplicate]PhP MySQL“WHERE”查询返回空/为空[重复]
【发布时间】:2017-10-09 11:17:22
【问题描述】:

好的,你好。所以我试图创建一个使用 MySQL 数据库生成 RecylerView 的 Android 应用程序。要获取数据,我在同一服务器上使用 PhP 文件存储。但我想稍微扩展一下应用程序。现在如果我调用这条线:$query = 'SELECT * FROM items WHERE catid = "$catid"'; 结果是空的。

奇怪的是:如果我在 PhPMyAdmin 中输入查询,它会显示正确的结果。

这是完整的 PHP 文件(已删除数据库登录)(Annnd 强制性免责声明:我的英语不流利,请原谅一些拼写错误 c:)

编辑:我认为有些人误解了:问题不在 Android 中。我敢肯定。而“生成”.. 只是忽略我不知道我可以使用什么其他词.. 所以问题只在 PHP 文件中

<?php
$connection = mysqli_connect("","","","");

$type = $_GET["t"];

if($type == "categorys"){
    $query = "SELECT * FROM categorys";
}else{
    $catid = $_GET["id"];
    $query = 'SELECT * FROM items WHERE catid = "$catid"';
}

$result = mysqli_query($connection,$query);


while ($row = mysqli_fetch_assoc($result)) {
    $array[] = $row;
}

header('Content-Type:Application/json');
echo json_encode($array);
?>

【问题讨论】:

  • 你确定$catid 有值吗?
  • ...使用 MySQL 数据库生成 RecylerView... MySQL 无法“生成”RecylerView,因为它对 Andorid 平台一无所知
  • @Selvin 我猜这是 REST API 的服务器端,而不是从 PHP 脚本动态生成 RecyclerView.Adapter(是的,这是不可能的)
  • 所以他应该写“在Android平台上使用PHP作为后端从MySQL获取数据并使用RecylerView显示”
  • 首先看bobby-tables.com,了解SQL注入以及如何防范。现在,您的代码非常开放,并且存在 SQL 注入的高风险。对带有用户输入的查询使用准备好的语句。

标签: php mysql arrays database


【解决方案1】:

这样写,double-quotes:

$query = "SELECT * FROM items WHERE catid = $catid";

如果catid是一个字符串,那么:

$query = "SELECT * FROM items WHERE catid = '$catid'";

无论如何,你应该使用prepared statement

【讨论】:

    【解决方案2】:

    试试这个:

    $query = "SELECT * FROM items WHERE catid = '$catid'";
    

    或:

    $query = "SELECT * FROM items WHERE catid = '".$catid."'";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-30
      • 2013-11-26
      • 2014-07-31
      • 2012-11-28
      • 2021-04-21
      • 2023-04-01
      • 2015-02-22
      • 1970-01-01
      相关资源
      最近更新 更多