通用MySQL选择所有功能

时间:2012-05-07 08:47:19

标签: php mysql

我在网站上写了很多SELECT * FROM ...类型的查询。我想编写一个为我提供此功能的函数,这样我就可以更快地调用它,而无需使用更高级的技术,如PDO和OOP。我只是对如何调用从数据库中检索的数据感到困惑,特别是在循环遍历数组的结果时。

我喜欢这样的事情:

function selectAll($tableName, $limitAmount) {
    global $dbConnection;
    $query = mysql_query("SELECT * FROM $tableName ORDER BY id LIMIT $limitAmount");
    $row_result = mysql_fetch_assoc($query);
    return $row_result;
}

说这是一堆新闻帖子。我想以一种典型的方式遍历结果:

// CALL THE FUNCTION
selectAll('news_table', '10');

// SOMEHOW LOOP THROUGH RESULTS??
do {
    echo "<h2>".$row_result['title']."</h2>";
} while ($row_result = mysql_fetch_assoc($query));

显然,这不是我如何遍历函数的定制结果。我甚至不确定我的功能是否正确。

非常感谢任何帮助。

编辑:忘记在函数内返回结果并调用实际函数。我的错。现在更新。

1 个答案:

答案 0 :(得分:1)

像你这样的功能没有任何意义。

就这样做吧

function fetchAll($query) {
  $res = mysql_query($query) or trigger_error("db: ".mysql_error()." in ".$query);
  $a   = array();
  if ($res) {
    while($row = mysql_fetch_assoc($res)) $a[]=$row;
  }
  return $a;
}

并将其用于任何查询:

$data = fetchAll("SELECT * FROM news_table ORDER BY id LIMIT 10");
foreach ($data as $row) {
    echo $row['title'];
}

SQL查询是强大程序本身。不要把它的力量减少到愚蠢的选择 使用SQL来表示数据处理逻辑和这个辅助函数,以避免重复。