【问题标题】:How to get data from database by id?如何通过id从数据库中获取数据?
【发布时间】:2017-11-19 06:30:12
【问题描述】:

我想从“data_show.php?id=2”获取数据

我的代码如下(detail1.php)

$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

if(!$mysqli){
    die("Connection failed: " . $mysqli->error);
}

$query = sprintf("SELECT name, humidity, ph, degree FROM dataklm");
$result = $mysqli -> query($query);
$data = array();
foreach ($result as $row) {
  $data[] = $row;
}

$result->close();
$mysqli->close();
print json_encode($data);

我已经使用上面的代码成功检索数据,但我想按 id 选择它们。我只是尝试如下。但它不起作用

$query = sprintf("SELECT name, humidity, ph, degree FROM dataklm WHERE id='$_GET['id']");

我将数据传递给此

<?php
include 'header.php';
include 'conn.php';
?>
<html>
<style type="text/css">
            #chart-container {
                width: 1000px;
                height: 1000px;
            }
        </style>
    <div class="container">
        <div class="jumbotron">
        <h1 class="display-3" style="text-align:center;">Smartfish</h1>
        <p class="lead" style="text-align:center;">Monitoring System</p>
        </div>
    </div>
        <body>
            <div id="chart-container">
                <canvas id="mycanvas"></canvas>
            </div>
            <script src="./assets/chart.js"> </script>
            <script src="./app.js"> </script>
        </body>
</html>

【问题讨论】:

  • 试试这个 $id = $_GET['id']; $query = sprintf("SELECT name,湿度, ph, degree FROM dataklm WHERE id= '$id' ");
  • 您的代码易受 SQL 注入攻击 - 我建议使用参数化查询。
  • @SushankPokharel 未定义索引“id”先生,即使我已经设置了 id
  • @Fawwaz 你能展示你如何将 id 传递给这个页面的代码吗?
  • @SushankPokharel 我在上面添加了代码。

标签: php mysql json


【解决方案1】:

我没有找到将 id 从您的 html 页面传递到 php 页面的任何内容。

将 id 从 html 传递到 php 页面:-

<a href="detail1.php?id=<?php echo $result['id']; ?>">view more</a>

这样做你会从 url 传递一个 id 到下一页。您可以使用 GET 方法作为

来获取此 id
$id = $_GET['id'];

然后使用您的查询。

希望这会对你有所帮助。

【讨论】:

  • 你在这里添加的答案基本相同stackoverflow.com/a/47375194/1415724你需要删除一个
  • @Fred-ii- 这是一个错误。只是由于网络问题,它没有显示我的第一个答案,所以我再次发布了答案。我已经删除了一个答案。
【解决方案2】:

如果你在字符串中像这样写“$_GET['id']”,它会被当作字符串来威胁。

$query = sprintf("SELECT name, humidity, ph, degree FROM dataklm WHERE id='".$_GET['id']."'");

【讨论】:

  • 如果是未定义索引,则 url 中未设置“id”。
  • 设置好了,先生,在我添加该代码后,我的数据不再编码为 json。
  • 这让您对 SQL 注入攻击敞开大门如果你使用这种方法,你会被黑。切勿将任意数据连接到 SQL 查询中。使用准备好的/参数化的查询来避免这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多