0

我想创建一个函数来选择具有特定条件的每个字段。所以基本上我想点击一个链接,让该链接的某些部分告诉我的 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'];
  }
}

结果什么都没有,没有错误等。它不知道如何获得标准,因为我不知道如何将标准指向它。我怎样才能使这项工作?我可以通过链接指定标准,这一点很重要。

4

3 回答 3

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'];
  }
}
于 2013-01-24T13:31:42.090 回答
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'];
  }
}
于 2013-01-24T13:26:00.403 回答
0

除了 mallix 的答案之外,如果类别是数字,我建议在 intval($cat) 上更改 $cat,如果类别是字符串,我建议更改 addlashes($cat)。

于 2013-01-24T13:27:51.257 回答