如何通过href发送PHP变量

时间:2018-07-18 20:38:56

标签: php html

这是我目前可以使用的fetch.php文件,但我似乎无法将php超链接连接到gene.php文件。

我正在考虑如何将html与php分开,以遵循其他建议,但是在如何做到这一点上却很挣扎。

 while($row = mysqli_fetch_array($result))
  {
 $output .= '
 <tr>
<td><a href="gene.php?id=' . $row['mRNA'] . '">'.$row["mRNA"].'</a></td>
<td><a href="gene.php?id=' . $row['mRNA'] . '">'.$row["Gene"].'</a></td>
<td>'.$row["Subtype"].'</td>
</tr>
';
  }
echo $output;
}
?>

如果可能的话,我希望可以将新的gene.php?id变量作为查询传递回我的gene.php页面上。

   <?php
   $connect = mysqli_connect("localhost", "root", "", "database");
   $id[0] = $_REQUEST['id'];
   $query = "SELECT * FROM genenames WHERE mRNA=".$id."";

2 个答案:

答案 0 :(得分:1)

尝试使用PDO,在准备好的语句方面更漂亮。

<?php

// userinput is evil
$id = (int)$_REQUEST['id'];
// or
$id = filter_var($_REQUEST['id'], FILTER_SANITIZE_NUMBER_INT);

// abort here, if $id is not valid

// connection config
$host = '127.0.0.1';
$port = 3306;
$name = 'db-name';
$username = 'db-username';
$password = 'db-password';

$options = [
    PDO::ATTR_PERSISTENT => false
];

$dsn = 'mysql:host='.$host.';port='.$port.';dbname='.$name;

$result = [];
try
{
    $pdo = new PDO($dsn, $username, $password, $options);

    $sql = "SELECT * FROM genenames WHERE mRNA=:id";

    $params = [
        'id' => $id
    ];

    $mode = PDO::FETCH_ASSOC;

    $statement = $pdo->prepare($sql);
    if($statement->execute($params))
    {
        $statement->setFetchMode($mode);
        $result = $statement->fetchAll();
    }
}
catch(PDOException $e)
{
    die('Error!: ' . $e->getMessage());
}


$output = '<table>';

// print your rows
foreach($result as $row) {

    $output .= '
        <tr>
            <td><a href="gene.php?id=' . $row['mRNA'] . '">'.$row["mRNA"].'</a></td>
            <td><a href="gene.php?id=' . $row['mRNA'] . '">'.$row["Gene"].'</a></td>
            <td>'.$row["Subtype"].'</td>
        </tr>
    ';
}

$output .= '</table>';

echo $output;

答案 1 :(得分:0)

更改以下代码 并检查为您工作

 $connect = mysqli_connect("localhost", "root", "", "database");
 $id = $_REQUEST['id'];
 echo $id;//check for id it print or not
 $query = "SELECT * FROM genenames WHERE mRNA=".$id."";

或类似的操作,如通过id的索引进行操作

 $connect = mysqli_connect("localhost", "root", "", "database");
 $id[0] = $_REQUEST['id'];
 echo $id[0];//check for id it print or not
 $query = "SELECT * FROM genenames WHERE mRNA=".$id[0]."";

但这是一个sql注入问题,您正在允许其他人通过URL传递,我建议您阅读有关SQL注入的信息。使用表格发布数据或使用其他方式将其发送出去以防止您进行sql注入。