我创建了两个函数,一个用于连接MySQL数据库,另一个用于运行特定查询。
我输入数据库名称作为连接数据库的第一个函数的参数,这很好,但我的问题是第二个。
第二个函数返回$result
来运行查询,但当我使用mysql_fetch_array
和$result
时,即使它应该给出多个输出,它也会给出一个输出。
因为我不是PHP专家,所以我找不到解决方案。请帮帮我。
以下是代码:
文件功能.php
<?php
function myconnect($data)
{
$db_host='localhost';
$db_user='root';
$db_pwd='';
$data=$data;
$dbc = mysqli_connect($db_host, $db_user,$db_pwd,$data) or die (mysql_error());
return $dbc;
}
function runquery($db,$table,$tcol,$tid)//(databse,table,column_name,identifier)
{
$dbc=myconnect($db);
$query="SELECT *FROM ".$table." WHERE ".$tcol."=".$tid." ORDER BY first_name ASC";
$result = mysqli_query($dbc, $query);
return $result;
}
?>
文件test.php
<?php
require_once('testfunc.php');
$result= runquery('user','user_basic','user_type','1');
//runquery('database','table','col','id')/
while($row=mysqli_fetch_array($result))
{
echo '<strong>First Name:</strong>' . $row['first_name'] . '<br/>';
}
?>
如果我做错了,那么建议我一个更好的方法: - )
答案 0 :(得分:2)
快速浏览显示您的函数 runquery
SELECT *FROM
应该是
SELECT * FROM
注意*
之后的空格编辑: 我还注意到你正在使用* mysqli_fetch_array *,这不是一个有效的mysqli方法。你正确使用mysqli扩展而不是mysql,但你应该更多地考虑statement fetch来解决这个问题。我提供的链接提供了一个程序示例,可以满足您的需求。
答案 1 :(得分:0)
function myconnect($db)
{
/*Removed redundant - single use variables*/
/*DB name was passed to the client_flags parameter of mysql_connect instead of mysql_select_db*/
$dbc = mysql_connect("localhost", "root","") or die (mysql_error());
/*Inserted Line*/
mysql_select_db($data);
return $dbc;
}
目前您没有选择数据库 - 相当于USE DATABASE db_name。
一些语法更改和函数定义
function runquery($db,$table,$tcol,$tid)//(databse,table,column_name,identifier)
{
$dbc=myconnect($db);
/*Query and link identifier were in the wrong order*/
return mysql_query("SELECT * FROM ".$table." WHERE ".$tcol."=".$tid." ORDER BY first_name ASC", $doc);
}
最后几个语法更改,函数调用
require_once('testfunc.php');
$result= runquery('user','user_basic','user_type','1');
/*fetch associateive array of result during iteration*/
while($row=mysql_fetch_assoc($result))
{
echo '<strong>First Name:</strong>' . $row['first_name'] . '<br/>';
}