Php 如何利用这些sql语句生成函数,这样就不必重复太多次?
我想把这些语句变成一个函数,正如你所看到的,它是重复的。如何使用函数来提高效率?非常感谢你的提示Php 如何利用这些sql语句生成函数,这样就不必重复太多次?,php,mysql,function,Php,Mysql,Function,我想把这些语句变成一个函数,正如你所看到的,它是重复的。如何使用函数来提高效率?非常感谢你的提示 if (isset ($_GET["news"])){ $statement = $pdo->prepare("SELECT * FROM posts INNER JOIN users ON posts.userID = users.id WHERE category = 'news'"); $statement->execute(); $blog = $statement ->
if (isset ($_GET["news"])){
$statement = $pdo->prepare("SELECT * FROM posts INNER JOIN users ON
posts.userID = users.id
WHERE category = 'news'");
$statement->execute();
$blog = $statement ->fetchALL(PDO::FETCH_ASSOC);
}
if (isset ($_GET["style"])){
$statement = $pdo->prepare("SELECT * FROM posts INNER JOIN users ON
posts.userID = users.id
WHERE category = 'style'");
$statement->execute();
$blog = $statement ->fetchALL(PDO::FETCH_ASSOC);
}
if (isset ($_GET["interior"])){
$statement = $pdo->prepare("SELECT * FROM posts INNER JOIN users ON
posts.userID = users.id
WHERE category = 'interior'");
$statement->execute();
$blog = $statement ->fetchALL(PDO::FETCH_ASSOC);
}
if (isset ($_GET["featured"])){
$statement = $pdo->prepare("SELECT * FROM posts INNER JOIN users ON
posts.userID = users.id
WHERE category = 'featured'");
$statement->execute();
$blog = $statement ->fetchALL(PDO::FETCH_ASSOC);
}
它基于类别排序(新闻、风格、内饰、特色) 有两种方法可以对这只猫进行蒙皮,但我使用了一个函数,可以使用PDO运行所有查询。下面是该函数以及连接:
function dataQuery($query, $params) {
// what kind of query is this?
$queryType = explode(' ', $query);
// establish database connection
try {
$dbh = new PDO(DBL, USER, PASS);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo $e->getMessage();
$errorCode = $e->getCode();
}
// run query
try {
$queryResults = $dbh->prepare($query);
$result = $queryResults->execute($params);
if($queryResults != null && 'SELECT' == $queryType[0]) {
// only return results for SELECT queries - the remainder need no output
$results = $queryResults->fetchAll(PDO::FETCH_ASSOC);
return $results;
}
$queryResults = null; // first of the two steps to properly close
$dbh = null; // second step to close the connection
return $result;
}
catch(PDOException $e) {
$errorMsg = $e->getMessage();
echo $errorMsg;
}
}
注意:try/catch
是不必要的,但我确实为其他Pruspose捕获了错误消息,因此这是一种方便的方法
然后,在任何需要查询的时候,我都可以编写查询并随请求发送参数:
$role = $_POST['role'];
$getRoleID = "SELECT `id` FROM `roles` WHERE `role` = :role;";
$params = array(':role'=>$role);
$result = dataQuery($getRoleID, $params);
然而,你的是更具体一点。你希望你的博客有一个单一的功能。结合你的和我的,你可以这样做:
function getBlogPosts($type) {
$getPosts = "SELECT * FROM posts INNER JOIN users ON posts.userID = users.id WHERE category = :category");
$params = array(':category'=>$type);
$result = dataQuery($getPosts, $params);
return $result;
}
现在,要调用函数,只需插入所需的帖子类型:
$featured = getBlogPosts('featured');
或:
解析返回的结果,您就可以开始了。对于我的类,这些查询中的每一行都只有一行
$statement=$db->all(“QUERY”)
我们总是很乐意帮助和支持新的编码人员,但您需要首先帮助自己。:-)如果您有问题,请发布您尝试过的内容,并清楚解释哪些内容不起作用,然后提供。读一个好问题。一定要阅读。如果答案解决了你的问题,请考虑接受答案。下面是如何返回此处并对勾号/复选标记执行相同操作,直到其变为绿色。这将通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,并可能希望发布(更多)答案。您将获得积分,并鼓励其他人帮助您。欢迎来到Stack!
$interior = getBlogPosts('interior');