用于Mysql查询的Php自定义函数不起作用

时间:2012-01-16 19:08:04

标签: php function

我创建了两个函数,一个用于连接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/>';
  }
?>

如果我做错了,那么建议我一个更好的方法: - )

2 个答案:

答案 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/>';
}