遇到了一个相当无语的问题啊我在php网站中向mysql数据库中插入数据不成功,但是同样的语句用mysql控制台插入就可以,急死我了,大家帮忙看看啊php页面:
<?php
set_time_limit(0);
require ("../include/config.inc.php");
function makedate() {
        // 获取当前系统时间
        $curtime = getdate();
        $curtime =$curtime['year'] . "-".$curtime['mon'] . "-".$curtime['mday'] ;        Return $curtime;
    }
$typearray = array('image/jpeg','image/jpg','image/pjpeg','image/png','image/gif','image/x-png','image/jpeg','image/bmp');
 if(isset($_POST['submit']))
 {
        $date=makedate();
     $title=$_POST['title'];
         $des=$_POST['des'];
         $author=$_POST['author'];
    $source=$_POST['source'];
    $error = $_FILES['img']['error'];
    $name = $_FILES['img']['name'];
    $type = $_FILES['img']['type'];
    $size = $_FILES['img']['size'];
    $tmpname = $_FILES['img']['tmp_name'];
    $msg = "";
    $imgshow = "";    
    foreach($error as $key=>$err)
    {
        if($err>0)
        {
            if($err==4)
            {
                $msg = "没有选择文件";
                echo $msg;
                exit();
            }else
            {
                $msg = $name[$key]."---上传出错    ;";
                echo $msg;
                exit();
            }
        }else
        {
            if(!in_array($type[$key],$typearray))
            {
                $msg = $name[$key]."---不支持上传此类型的文件;";
                echo $msg;
                exit();
            }else if($size[0]>2097152)
            {
                $msg = $name[$key]."---文件超过2M;";
                echo $msg;
                exit();
            }else if(!is_uploaded_file($tmpname[$key]))
            {
                $msg = $name[$key]."---非法方式提交文件;";
                echo $msg;
                exit();            }else
            {
                $ext = explode('.',$name[$key]);
                $fname = time().rand(101,999).'.'.end($ext);
                $path = "upimage/".$fname;
                $upflag = move_uploaded_file($tmpname[$key], $path);
                if(!$upflag)
                {
                    $msg = $name[$key]."---转移文件出错;";
                    echo $msg;
                exit();
                }else
                {
                    $url = "upimage/".$fname;                    mysql_pconnect($dbhost,$dbuser,$dbpasswd);
        mysql_query("set names 'gb2312'");
                    $sql = "insert into imgs(title,laiyuan,des,date,author,url)values('$title','$source','$des','$date','$author','$url')";
                    echo $sql;    
                    try
                    {
                         if(mysql_db_query($dbname,$sql))
                           {
                              echo "aaaaaaaaaaaaaaaaaaaaaaaaaaa";
                              }    
                    }catch(Exception $e)
                    {
                        echo $e->getMessage(); 
                    }
            }
            }        
        }
    }        
 }    
?>各位神牛帮帮忙啊

解决方案 »

  1.   

    有错误提示么?看下是什么错误不行的话用mysql_query()试试
      

  2.   

    缺少mysql_select_db?
      

  3.   

    楼主咋还发两个帖子
    $sql = "insert into imgs(title,laiyuan,des,date,author,url)values('$title','$source','$des','$date','$author','$url')";
    echo $sql;这个传到服务器上能够打印出来吗
      

  4.   

    mysql_pconnect($dbhost,$dbuser,$dbpasswd);
    mysql_select_db($dbname);  //你没有选择一个目标操作数据库,怎么执行SQL呢?
    mysql_query("set names 'gb2312'");
      

  5.   

    可以试一下用mysql_query
      

  6.   

    没有选择数据库,即mysql_select_db()操作;如果还有错误,LZ可以打印信息看看,比如echo "$sql";看变量是否被想要的数据代替
      

  7.   

    This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
      

  8.   

    好,终于解决了问题,下面来回复以上楼上各位的回复,
    首先谢谢大家。
    一楼:我用trycatch语句想获取异常信息并输入的,结果目的没有达到,后来改成了 $sql="insert into imgs(title,kind,laiyuan,des,pubdate,author,url)values('$title','$kind','$source','$des','$date','$author','$url')";
                         // echo $sql;
                          $result=mysql_query($sql,$conn);
                          if(!$result)
                          {
                            echo mysql_errno()."".mysql_error();
                          }else
    输出了错误号码和错误提示信息,发现插入不了的原因是某些汉字不正确,后来想了想应该是编码的问题,修改了一下编码信息,结果能正确插入了。当然这些mysql_query()等方法自己也不是非常熟悉差别,也是不断上网查找资料,不断修改自己的程序才解决的。呵呵二楼和五楼和八楼:我不知道是不是一定要用那个先选中数据库,因为在我添加新闻的那个页面中就跟这里写的几乎一样,用的是Mysql_db_query($dbname,$sql)语句,就可以执行,呵呵,不过后来我改了我的程序,用到了你们说的那个方法,谢谢啦~~三楼:当时不是着急嘛  发帖子之后怕没有人回复,所以就乱投医啦 多发几个 呵呵四楼和七楼:你们说的很对,想要改错,必须知道错在哪里,所以我改了自己的代码 输出错误代码和错误信息,后来解决啦~~~
      

  9.   

    下面给大家看看我反复修改后的代码 
    呵呵<?php
    require ("../include/config.inc.php");
    $typearray = array('image/jpeg','image/jpg','image/pjpeg','image/png','image/gif','image/x-png','image/jpeg','image/bmp');
     if(isset($_POST['submit']))
     {
         date_default_timezone_set('PRC');//设置当前时区,如果不设置将与系统时间不一致
          $date=date("Y-m-d G:i:s");
      $title=$_POST['title'];
          $des=$_POST['des'];
          $author=$_POST['author'];
    $source=$_POST['source'];
    $error = $_FILES['img']['error'];
    $name = $_FILES['img']['name'];
    $type = $_FILES['img']['type'];
    $size = $_FILES['img']['size'];
    $tmpname = $_FILES['img']['tmp_name'];
    $msg = "";
    $imgshow = "";
    foreach($error as $key=>$err)
        {
    if($err>0)
            {
    if($err==4)
                {
    $msg = "没有选择文件";
    echo $msg;
    exit();
    }else
                {
    $msg = $name[$key]."---上传出错 ;";
    echo $msg;
    exit();
    }
    }else
            {
    if(!in_array($type[$key],$typearray))
                {
    $msg = $name[$key]."---不支持上传此类型的文件;";
    echo $msg;
    exit();
    }else if($size[0]>2097152)
                {
    $msg = $name[$key]."---文件超过2M;";
    echo $msg;
    exit();
    }else if(!is_uploaded_file($tmpname[$key]))
                {
    $msg = $name[$key]."---非法方式提交文件;";
    echo $msg;
    exit(); }else
                {
    $ext = explode('.',$name[$key]);
    $fname = time().rand(101,999).'.'.end($ext);
    $path = "upimage/".$fname;
    $upflag = move_uploaded_file($tmpname[$key], $path);
    if(!$upflag)
                    {
    $msg = $name[$key]."---转移文件出错;";
    echo $msg;
    exit();
    }else
                    {
    $url = "upimage/".$fname;
                         $conn=mysql_connect($dbhost,$dbuser,$dbpasswd);
                        mysql_query("set names 'gbk'",$conn);
                         if ($conn==FALSE)
                        {
                         echo "<center>服务器连接失败!<br>请刷新后重试。</center>";
                         return true;
                         }
                         do
                        {
                         $con=mysql_select_db($dbname,$conn);
                        }while(!$con);
                         if ($con==FALSE) 
                         {
                           echo "<center>打开数据库失败!<br>请刷新后重试。</center>";
                           return true;
                        }else
                         {
                          $sql="insert into imgs(title,kind,laiyuan,des,pubdate,author,url)values('$title','$kind','$source','$des','$date','$author','$url')";
                         // echo $sql;
                          $result=mysql_query($sql,$conn);
                          if(!$result)
                          {
                            echo mysql_errno()."".mysql_error();
                          }else
          { ?>
    <script language='javascript'>
          <!-- 
          alert('添加成功!');
          -->
          </script>
          <?php
           echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=imglist.php?setid=0'>";
    }                     }
    }
    }
    }
    }
     }
    ?>
      

  10.   

    对于九楼朋友所说的也很对,当时我安装了最新的xampp,当使用某些数据库操作函数的时候会提示很多函数已经过时了,后来为了能够继续使用这些函数,我就卸载了xampp,重新安装了appserv,呵呵
      

  11.   

    mysql db query 我从来不用。sql最多加个数据库前缀
      

  12.   

    mysql_db_query
    (PHP 4, PHP 5, PECL mysql:1.0)mysql_db_query — 发送一条 MySQL 查询说明
    resource mysql_db_query ( string $database , string $query [, resource $ link_identifier ] )
    根据查询结果返回一个正的 MySQL 结果资源号,出错时返回 FALSE。本函数会对 INSERT/UPDATE/DELETE 查询返回 TRUE/FALSE 来指示成功或失败。 mysql_db_query() 选择一个数据库并在其上执行查询。如果没有提供可选的连接标识,本函数会去找一个到 MySQL 服务器的已打开的连接,如果找不到已打开连接则会尝试无参数调用 mysql_connect() 来建立一个。 注意此函数不会切换回先前连接到的数据库。换句话说,不能用此函数临时在另一个数据库上执行 sql 查询,只能手工切换回来。强烈建议用户在 sql 查询中使用 database.table 语法来替代此函数。 参见 mysql_connect() 和 mysql_query()。 
    Note: 自 PHP 4.0.6 起不提倡使用此函数。不要用此函数,用 mysql_select_db() 和 mysql_query() 来替代。