我正在学习php,目前正在使用函数。 用两个表创建一个简单的数据库:Category和News。php功能与查询优化
此外,我创建了三个函数:get_news_title,get_news_image,get_news_text 每个函数返回 - 标题,图像或全文文本。 现在它是设置这样的:
function get_news_title($id) {
$sql = $this->conn->prepare("SELECT title from news WHERE id = :id");
$sql->bindparam(":id", $id);
$sql->execute();
$row=$sql->fetch(PDO::FETCH_ASSOC);
$title = $row["title"];
}
function get_news_image($id) {
$sql = $this->conn->prepare("SELECT img from news WHERE id = :id");
$sql->bindparam(":id", $id);
$sql->execute();
$row=$sql->fetch(PDO::FETCH_ASSOC);
$img = $row["img"];
}
function get_news_text($id) {
$sql = $this->conn->prepare("SELECT full_text from news WHERE id = :id");
$sql->bindparam(":id", $id);
$sql->execute();
$row=$sql->fetch(PDO::FETCH_ASSOC);
$text = $row["full_text"];
}
每个函数包含查询,但有可能是更好的办法?在每一个函数中使用查询是一种好的做法吗?因为如果我调用所有这些函数,则会有三个单独的查询运行。
而且它是使用这样的一个好主意:如果你要坚持你的方法,你一定是$领域仅由你掌控
function get_news($id,$field) {
$sql = $this->conn->prepare("SELECT :field from news WHERE id = :id");
$sql->bindparam(":id", $id);
$sql->bindparam(":field", $field);
$sql->execute();
$row=$sql->fetch(PDO::FETCH_ASSOC);
$title = $row["title"];
}
您不能使用列名称的参数。原因:如果数据库不知道它应该使用的列或表等,那么将如何编译,优化查询并创建执行计划 – RiggsFolly
为什么没有一个函数执行的查询可以将所有3列合为一个去'从新闻选择标题,新闻,full_text WHERE ID =:ID' – RiggsFolly
@RiggsFolly我可以做到这一点,但为了学习的目的,我这样做。有没有办法在一个函数中执行查询,然后从查询中调用其他字段? – ChrisX32