0

我有一个函数允许我根据用户选择的 SQL 服务器类型执行 sql 查询。该函数可以很好地获取单行数据,但它永远不会返回超过 1 行。

这是sql函数:

function sqlQuery($query){
switch (DATABASE_TYPE) {
    case 'MYSQL':
        // Establishes a connection to the database.
        $connection = mysql_connect(DATABASE_LOCATION, DATABASE_USERNAME, DATABASE_PASSWORD);
        if(!$connection){
            throw new Exception(mysql_error(), 1);
        }
        mysql_select_db(DATABASE_NAME);

        // Performs the query.
        global $response;
        $response = mysql_query($query);
        if(!$response){
            throw new Exception(mysql_error(), 1);
        }
        return mysql_fetch_array($response);
        break;
    }
}

就像我上面说的,这对单行查询很有效,但我不能再得到了。

如果我试试这个:

$sql = "SELECT * FROM test"
$rows = sqlQuery($sql);
foreach($rows as $value){
    echo($value);
}

如果测试的第 1 行是1 | Hello | PHP它会回显11HelloHelloPHPPHP

4

4 回答 4

0

如果您有更多的行数,您必须使用 forloop 来获取所有行.. 那就是它将作为 resourceid 返回 #- 请 print_r 或回显您的结果并检查它.. 之后在 mysql_fetch_row ~ mysql_fetch_array 中使用该结果~你想要的任何其他东西..并将其存储在数组中,其 id 作为键...请检查以下编辑后的代码,

function sqlQuery($query){
switch (DATABASE_TYPE) {
    case 'MYSQL':
        // Establishes a connection to the database.
        $connection = mysql_connect(DATABASE_LOCATION, DATABASE_USERNAME, DATABASE_PASSWORD);
        if(!$connection){
            throw new Exception(mysql_error(), 1);
        }
        mysql_select_db(DATABASE_NAME);

        // Performs the query.
        global $response;
        $response = mysql_query($query);
        if(!$response){
            throw new Exception(mysql_error(), 1);
        }
        while($rows = mysql_fetch_array($sql))
        {
            $data[$rows['id]] =  $rows;
        }
        return $data;
        break;
    }
}
于 2012-12-17T06:00:20.427 回答
0

做起来很简单

$sql = "SELECT * FROM test";
$data = array();

while($rows = mysql_fetch_assoc($sql))
{
    $data[] = $rows ;
}

return $data;
于 2012-12-17T05:41:54.760 回答
0

为了更清楚地了解 raheel 的答案,mysql_fetch_array 只返回一行结果。使用 while 循环可以让您继续获取其他行,只要它们存在。有关其他信息,您可能需要查看从函数内部获取动态数组

于 2012-12-17T05:45:39.070 回答
0

我能够通过更改返回的数据类型来解决此问题:

return mysql_fetch_array($response);

至:

$rows = array();
while($row = mysql_fetch_array($response)){
    array_push($rows, $row);
}
return $rows;

感谢你的帮助!

于 2012-12-17T23:35:31.950 回答