我想创建一个选择具有特定条件的每个字段的函数。所以基本上我想点击一个链接,让该链接的某些部分告诉我的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'];
}
}
结果是什么,没有错误等。它不知道如何获得标准,因为我不知道如何指导标准。我怎样才能做到这一点?重要的是我可以通过链接指定标准。
答案 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)。