我有一个允许我根据用户选择的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
答案 0 :(得分:0)
这很简单
$sql = "SELECT * FROM test";
$data = array();
while($rows = mysql_fetch_assoc($sql))
{
$data[] = $rows ;
}
return $data;
答案 1 :(得分:0)
为了更清楚地了解raheel的答案,mysql_fetch_array只返回一行结果。使用while循环允许您继续抓取其他行,只要它们存在。有关其他信息,您可能需要查看Getting dynamic array from inside a function
答案 2 :(得分:0)
如果你有更多行,你必须使用forloop来获取所有行...它将作为resourceid#返回 - 请print_r或echo你的结果并检查它...之后使用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;
}
}
答案 3 :(得分:0)
我能够通过更改返回的数据类型来解决问题:
return mysql_fetch_array($response);
为:
$rows = array();
while($row = mysql_fetch_array($response)){
array_push($rows, $row);
}
return $rows;
感谢您的帮助!