我每次运行就会出现我所注释的地方出错,     
     print "Insert into database failed!";
说明语句$query="insert into visiter values(\'$login\',\'$password1\',\'$question\',\'$answer\',\"email\',\'$truename\',$gender,\'$date\',$edcation,$marital,$employment,$occupation,$province);";
出错了三。
请指点。谢谢。

解决方案 »

  1.   

    我只看了SQL语句那句,就有错,\"email\',该用\'的吧
      

  2.   

    把\去掉试试
    另外insert into 最好这样:
    intert into tablename (filename1,filename2,......) values('$name1','$name2',......)
      

  3.   

    同意楼上的观点,slash(\)没有必要,反而会坏事
    所有的变量都用‘标引
    另外$query的附值语句里不用分号
      

  4.   

    你可以先在phpmyadmin那执行这个插入记录的SQL语句看看有没出错呀
    或者你先phpmyadmin那执行插入记录命令,然后再复制那段SQL语句来用也可以
      

  5.   

    Warning: Supplied resource is not a valid MySQL result resource in c:/apache/htdocs/register.php on line 42Warning: sprintf(): too few arguments in c:/apache/htdocs/register.php on line 45
      

  6.   

    这个不是error吧。应该是系统的notice吧?
    我在php.ini里面设置的errorreporting=e_error&notice
      

  7.   

    能贴出来42,45行是什么
    42输出好象错误
    45 sprintf()函数用的不对吧?
      

  8.   

    41 $res=@mysql_query($query,$handler);
    42 $num=mysql_num_rows($handler);
    43 if($num==0)
    44 {
    45 $date=sprintf("%s%s%s","$year,$month,$day");
    46 $query="insert into visiter values('$login','$password1','$question','$answer','email','$truename','$gender','$date','$edcation','$marital','$employment','$occupation','$province')";
    42 和45 应该都没有问题吧。
      

  9.   

    上次我提的那个问题,我根据 yunfeifan(云飞凡)  的提示,改成上面的46句那样的。后来的47句:$res=@mysql_query($query,$handler);成功的插入了数据。
    但是新的问题又产生了。:)
    有两个。
    1。请问怎么查看用户(这个插入成功的用户)的数据?
    2。(关键的)我第二次注册时使用相同的用户资料(就是上次刚刚注册成的)
        进行注册时,程序未提示这个用户已经注册!我很疑惑!
        //*在程序中的
    27 $handler=@mysql_connect("localhost","yuebanwan","fenshouzhongy");
    28 if($handler==false)
    29    {
    30    print "Connect to Mysql failed.";
    31    exit();
    32 }
    33 $query="use visitors";
    34 $res=@mysql_query($query,$handler);
    35if($res==false)
    36    {
    37   print "Switch to \"visitors\"database failed!";
    38   exit();
    39 }
    40 $query="select*from register where login=\"$login\";";
    41 $res=@mysql_query($query,$handler);
    42 $num=mysql_num_rows($handler);
    43 if($num==0)
      这里的逻辑也是很清楚的。第一个$query是查询的是否存在visitors数据库。
      问题可能就出在这个地方,第二个$query查询的是在visitors数据库下的table还是 和visitors是同一个根目录下的数据库?如果是后者,那么后面的46句和47句的操作就不可能成功,因为insert必须是对已知的table(在数据库visitors下已经被创建的表)进行操作,而我的实验结果是已经成功的完成了插入操作,所以第二个$query应该查询的是数据库visitors下的table,那么这段程序的功能是明显而且也是和我的要求相吻合的:就是查询数据库visitors下是否存在和$login相同的table。返回值 $num就是判断是否数据库中已经有与$login[准备注册的用户名]相同。虽然逻辑正确,语法也正确,但是却出现了:我第二次注册时使用相同的用户资料(就是上次刚刚注册成的)进行注册时,程序未提示这个用户已经注册!所以我很疑惑,请大家讨论讨论,给个建议。谢谢 *//3 这个问题是:用mysql_query()如何实现多级数据库(就是一个数据库里面还有若干数据库,即是几层的结构)?能吗?
      

  10.   

    !请问怎么查看用户(这个插入成功的用户)的数据?这个你可以先查询数据库,判定现有的用户表中有没有与输入的用户名相同的
    如果有就输入提示信息,而不执行insert语句附:
    ..
    ..
    $query="SELECT * from register where login=\"$login\";
    $res=mysql_query($query,$hander) or die("errror");
    $num=mysql_num_rows($res);
    if($num==0)
    {
      $query="INSERT register ........";
      ..
     ...
    ..
    }
    else
    {
    print "sorry your name has been used by another<br>";
    print "Please choise another to try!";
    exit;
    }
    ..
    ..
    ?>
      

  11.   

    不对,刚才有点小错误
    INSERT 那句应该为 INSERT INTO ......
      

  12.   

    ????
    40
    41
    42
    就是这个功能。你只是多了一个or die("error"),应该不影响这段程序的功能吧?
      

  13.   

    经过反复实验,通过使用相同的资料进行注册,并对c:\mysql\data\visitors
    目录下的isiter.myd 进行跟踪观察。实验表明,每次注册这个visiter.myd文件的大小随着注册的次数增加而增大。最后通过记事本打开发现相同的资料已经被注册了若干次了,
    说名那个查询功能程序段没有起到相应的作用。
    40 $query="select*from register where login=\"$login\";";
    41 $res=@mysql_query($query,$handler);
    42 $num=mysql_num_rows($handler);
    43 if($num==0)

    请各位帮帮想想办法。3ks。
    我觉得应该是40句有问题,这个地方的$login的值并没有变(基于这个考虑,是因为这个地方的$login是在另外一个程序中被赋值的),因为在程序的开始就有个判断语句,如果为空的话,就根本不能运行到这个地方(后边的插入程序),在后来打开visiter.myd 文件也能证明$login值是没有变化。如此分析后,问题应该出现在这个语句的语法方面。
      

  14.   

    <?
       $hh=myssql_connect('sql服务器名','用户名','密码');
        mysql_select_db('要用到的数据库名');//这句应该写上
        $query="insert into mytable(tablename) values ("value")";
        mysql_query($query,$hh);
       $err=mysql_error;
    if ($err){
    echo "error";
    }else{
    echo "ok";
    }
    ?>
      

  15.   

    谢谢!这个问题已经在各位大虾的全力帮助下得到完满解决。:)
    其中凉开水同志给出的正确解答我没有仔细看,后来我自己找到了原因,居然我引用的是($handler),正确的应该是$res.呵呵,分特了啊。
    $num=mysql_num_rows($res);谢谢所有关心而且帮助我的哥们同志们,不知道有mm没,呵呵。