我想创建一个简单的函数,我可以调用它来查询我的数据库。我将查询的“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;
}
答案 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;
}
对功能的改进:
$dbh
。 Passit,否则查询将无效。while
循环代替foreach
。 Read more here. listingdata
数组,这样当没有返回任何行时,仍然会得到一个空数组而不是空数。答案 1 :(得分:0)
您是否拥有有效的数据库连接?您需要在函数内创建连接(显然名为$ dbh),将其作为参数传递,或者将其作为全局加载到函数的范围中,以使$result = mysql_query($q,$dbh);
起作用。
答案 2 :(得分:0)
您需要使用while
,而不是foreach
和mysql_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;
}