如何从URL中获取信息并在php函数中使用它?

时间:2013-01-24 13:23:45

标签: php mysql url sorting

我想创建一个选择具有特定条件的每个字段的函数。所以基本上我想点击一个链接,让该链接的某些部分告诉我的php函数选择的标准是什么。

我有一个像这样的链接列表:

<li><a href="category.php?category=cat1">Cat1</a></li>
<li><a href="">Cat2</a></li>
<li><a href="">Cat3</a></li>
<li><a href="">Cat4</a></li>
<li><a href="">Cat5</a></li>

链接的一部分是.php?category=criteria。如何将此信息发送到我的函数并使用它来选择字段?

这是我的功能:

public function get_by_category ($cat) {
  $cat = $_GET['category'];
  $sql = $this->db->prepare("SELECT * FROM Content WHERE category=?");
  $sql->bindParam(1, $cat);
  $sql->execute();

  while ($row = $sql->fetch()) {
    echo $row['Title'];
  }
}

结果是什么,没有错误等。它不知道如何获得标准,因为我不知道如何指导标准。我怎样才能做到这一点?重要的是我可以通过链接指定标准。

3 个答案:

答案 0 :(得分:1)

将PDO与命名参数一起使用通常有效:

public function get_by_category ($cat) {
  $cat = $_GET['category'];
  $sql = $this->db->prepare("SELECT * WHERE category=:category");
  $sql->bindParam("category", $cat);
  $sql->execute();

  while ($row = $sql->fetch()) {
    echo $row['Title'];
  }
}

通过放置print $sql->fullStmt来检查准备好的语句,然后发送到SQL,可以看到正在执行的SQL。

更新:为了查看PDO异常,您可以尝试捕获它们:

public function get_by_category ($cat) {
  $cat = $_GET['category'];
  try {
    $sql = $this->db->prepare("SELECT * WHERE category=:category");
    $sql->bindParam("category", $cat);
    $sql->execute();
  }
  catch (PDOException $e) {
    print $e->getMessage();
  }

  while ($row = $sql->fetch()) {
    echo $row['Title'];
  }
}

答案 1 :(得分:0)

将$ cat值传递给您的查询应该可以完成这项工作,但链接应该是这样的:

<li><a href="category.php?category=15">Cat1</a></li>

public function get_by_category () {
  $cat = $_GET['category']; //Check if is numeric, strip code out of it etc..
  $sql = $this->db->prepare("SELECT * FROM `table` WHERE `category` = $cat");
  $sql->bindParam(1, $cat);
  $sql->execute();

  while ($row = $sql->fetch()) {
    echo $row['Title'];
  }
}

答案 2 :(得分:0)

作为mallix的回答的补充,如果category是数字,我建议在intval($ cat)上更改$ cat,如果category是string,则建议使用addslashes($ cat)。