如何创建一个简单的函数来查询数据库?我的工作没有用!

时间:2010-09-15 02:03:06

标签: php mysql function

我想创建一个简单的函数,我可以调用它来查询我的数据库。我将查询的“where”部分传递给它,在下面的代码中,我的$ q变量是正确的。但是,我应该怎么做才能使用数据?我对如何做某件事感到困惑,我确信这非常容易。非常感谢任何帮助!

function getListings($where_clause)
{
 $q = "SELECT * FROM `listings` $where_clause";
 $result = mysql_query($q,$dbh);
 foreach (mysql_fetch_array($result) as $row) {
  $listingdata[] = $row;
 }
 return $listingdata;
}

5 个答案:

答案 0 :(得分:2)

你的功能应该是这样的:

function getListings($where_clause, $dbh)
{
    $q = "SELECT * FROM `listings` $where_clause";

    $result = mysql_query($q, $dbh);

    $listingdata = array();
    while($row = mysql_fetch_array($result))
        $listingdata[] = $row;

    return $listingdata;
}

对功能的改进:

  1. 在函数参数中添加MySQL链接$dbh。 Passit,否则查询将无效。
  2. 使用while循环代替foreachRead more here.
  3. 初始化listingdata数组,这样当没有返回任何行时,仍然会得到一个空数组而不是空数。

答案 1 :(得分:0)

您是否拥有有效的数据库连接?您需要在函数内创建连接(显然名为$ dbh),将其作为参数传递,或者将其作为全局加载到函数的范围中,以使$result = mysql_query($q,$dbh);起作用。

答案 2 :(得分:0)

您需要使用while,而不是foreachmysql_fetch_array,否则只会获取第一行,并且您将遍历该行中的列。< / p>

$q = "SELECT * FROM `listings` $where_clause";
$result = mysql_query($q,$dbh);
while (($row = mysql_fetch_array($result)) != false)
{
  $listingdata[] = $row;
}

答案 3 :(得分:0)

始终在代码中添加错误处理。这样你就会看到出了什么问题。

    $result = mysql_query($q,$dbh);
    if (!$result) {
            trigger_error('Invalid query: ' . mysql_error()." in ".$q);
    }

答案 4 :(得分:0)

此功能可为您节省一些时间。首先是参数表名,然后是condition(where),字段和顺序。一个简单的查询将如下所示:query_db('tablename');

  function query_db($tbl_name,$condition = "`ID` > 0",$fields = "*",$order="`ID` DESC"){

    $query="SELECT ".$fields." FROM `".$tbl_name."` WHERE ".$condition." ORDER BY".$order;
    $query=$con->query($query);
    $row_data=array();
    while($rows = $query->fetch_array()){
        $row_data[] = $rows;
    }
    return $row_data;
}