updmb.php 调用condb.php的类,系统提示如下错误
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in D:\essamp\ESSamp\wwwroot\myproject\condb.php on line 30
Say:
select * from 
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\essamp\ESSamp\wwwroot\myproject\condb.php on line 58下面是页面源码
//***************************************************************
updmb.php 的内容<html><!-- InstanceBegin template="/Templates/pages.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>区域代码查询</title>
<!-- InstanceEndEditable -->
<link href="sg803.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//-->
</script>
<!-- InstanceBeginEditable name="head" -->
<!-- InstanceEndEditable -->
</head>
<?php
header("Content-Type: text/html; charset=gb2312");
include 'condb.php';
$db = new mysql('localhost','root','','qydm','utf-8');
if (is_uploaded_file($_FILES['upfile']['tmp_name']))
{
$upfile=$_FILES["upfile"];
$name = $upfile["name"];
$type = $upfile["type"];
$size = $upfile["size"];
$tmp_name = $upfile["tmp_name"];
$error = $upfile["error"];
if ($type=="text/plain")
{
$ertp=1;
}
echo $ertp."|".$error;
if ($ertp and $error=='0')
{
move_uploaded_file($tmp_name,'up/qybm.txt');
 echo "上传成功!<br>";
}
elseif ($ertp=0)
{
echo "上传的文件类型不正确!<br>";
}
elseif ($error=='1')
{
echo "文件上传出错!<br>";
}
echo "上传文件名: " . $name . "<br />";
echo "类型: " . $type . "<br />";
echo "大小: " . ($size / 1024) . " Kb<br />";
echo "保存的文件名: " . $tmp_name;
//把数据导入到数据库
$handle = @fopen('up/qybm.txt', "r"); //打开文件
if ($handle)
 {
$content= fread($handle,$size);
$rwar=explode($content,"\n");//获取全部文本
//先删除原有记录
if ($db->gtrow("qdlist")>0)
{
$dlrslt=$db->query("delete from qdlist");
}
if ($dlrslt)
{
foreach ($rwar as $k1=>$v1)
{  $rwfar=explode($v1,",");
$sqlstr="insert into qyqm(id,dw,qy,dz,yb,qydm)valuse('',";
     foreach($rwfar as $k2 =>$v2)//获取每行逗号间隔文本
    {  //插入数据库
 $sqlstr = $sqlstr."'".mb_convert_encoding($v2,"utf-8","gb2312") ."',";
   }
   $sqlstr=substr($sqlstr,0,strlen($sqlstr)-2).")";
   echo $sqlstr;  }
} fclose($handle);  }}?>
<body bgcolor="#FFFFFF" background="images/index_bg.jpg" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="776" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="5"><img src="images/savalo_blog_green_02.jpg" width="780" height="133" alt=""></td>
  </tr>
  <tr >
    <td width="417" height="24" class="menu"><img src="images/savalo_blog_green_04.jpg" width="18" height="24" alt=""  ></td>
    <td width="117" height="24" align="center" class="menu" >更新区域代码</td>
    <td width="114" height="24" align="center" class="menu" >查询区域代码</td>
    <td width="113" height="24" align="center" class="menu" >管理员登录</td>
    <td width="19"><img src="images/savalo_blog_green_12.jpg" width="18" height="24" alt=""></td>
  </tr>
</table>
<table width="778" height="102" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="11" rowspan="2" background="images/savalo_blog_green_13.jpg">&nbsp;</td>
    <td width="1" valign="top" style="FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#ffffff', EndColorStr='#000000')" height="50%"></td>
    <!-- InstanceBeginEditable name="EditRegion3" -->
    <td width="758" rowspan="2" align="left" valign="top" bgcolor="#FFFFFF">
      <form action="" method="post" enctype="multipart/form-data" name="form1" class="fmstl">
      <p>
      <h3>&nbsp;&nbsp;更新区域代码表</h3></p>
           <p>请选择要导入的区域代码表:(改代码表必须以逗号分隔,无标题行)</p>
      <label for="upfile">文件名:</label>
      <input name="upfile" type="file" id="upfile">
      <input type="submit" name="button" id="button" value="导入数据库">      </form>
     </td>
    <!-- InstanceEndEditable -->
    <td width="11" rowspan="2" background="images/savalo_blog_green_15.jpg">&nbsp;</td>
  </tr>
  <tr>
    <td width="1" valign="top" style="FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#000000', EndColorStr='#ffffff')" height="102"></td>
  </tr>
</table>
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><img src="images/savalo_blog_green_16.jpg" width="780" height="107" alt=""></td>
  </tr>
</table>
</body>
<!-- InstanceEnd --></html>
condb.php的内容
<?phpclass mysql
{
private $host; //主机名
private $name;//数据用户名
private $pwd;//数据库密码
private $tb;//数据库名称
private $ut;//字符编码
public $link;
function __construction($host,$name,$pwd,$tb,$ut)
{
$this->host=$host;
$this->name=$name;
$this->pwd=$pwd;
$this->tb=$tb;
$this->ut=$ut;
$this->connect();
}
function connect()
{
$link=mysql_connect($this->host,$this->name,$this->pwd)or die ($this->error());
        mysql_select_db($this->tb,$link) or die ("没有该数据库:".$this->tb);
        mysql_query("SET NAMES $ut");
}
    function query($sql)
    {
      if(!($query = mysql_query($sql,$link))) $this->show('Say:', $sql);
    return $query;    }
    
    function error()
    {
     return mysql_error();
    }
    function fn_insert($tbname,$zdm,$inv)
    {
     $this->query("insert into $tbname ($zdm) values($inv)");
    }
    function show($message='',$sql='')
    {
     if(!$sql) echo $message;
else echo $message.'<br>'.$sql;
    }
    function close() {
return mysql_close();
}
function slct($tbname)
{
$this->query("select * from $tbname");
}
function gtrow($tbanme)
{
$rslt=$this->slct($tbname,$link);
$rs=mysql_num_rows($rslt);
return  $rs;
}
}?>

解决方案 »

  1.   

    一切源于此
    function query($sql)
    {
      if(!($query = mysql_query($sql,$link))) $this->show('Say:', $sql);
      return $query;
    }$link 从哪来的?
    不要,反倒不会出错!
      

  2.   

    mysql_query()向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询。如果没有指定 link_identifier,则使用上一个打开的连接。如果没有打开的连接,本函数会尝试无参数调用 mysql_connect()函数来建立一个连接并使用之。查询结果会被缓存。 
      

  3.   

    的确如你们所说,去掉$link就不提示错误了,但是condb.php的fn_insert()无法执行,每次执行,系统都会提示say:*********.。还请老师们再帮忙看看
      

  4.   

    我用say后面提示的sql语句,在mysql里是可以正常运行的