我每次运行就会出现我所注释的地方出错,
print "Insert into database failed!";
说明语句$query="insert into visiter values(\'$login\',\'$password1\',\'$question\',\'$answer\',\"email\',\'$truename\',$gender,\'$date\',$edcation,$marital,$employment,$occupation,$province);";
出错了三。
请指点。谢谢。
print "Insert into database failed!";
说明语句$query="insert into visiter values(\'$login\',\'$password1\',\'$question\',\'$answer\',\"email\',\'$truename\',$gender,\'$date\',$edcation,$marital,$employment,$occupation,$province);";
出错了三。
请指点。谢谢。
另外insert into 最好这样:
intert into tablename (filename1,filename2,......) values('$name1','$name2',......)
所有的变量都用‘标引
另外$query的附值语句里不用分号
或者你先phpmyadmin那执行插入记录命令,然后再复制那段SQL语句来用也可以
我在php.ini里面设置的errorreporting=e_error¬ice
42输出好象错误
45 sprintf()函数用的不对吧?
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 应该都没有问题吧。
但是新的问题又产生了。:)
有两个。
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()如何实现多级数据库(就是一个数据库里面还有若干数据库,即是几层的结构)?能吗?
如果有就输入提示信息,而不执行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;
}
..
..
?>
INSERT 那句应该为 INSERT INTO ......
40
41
42
就是这个功能。你只是多了一个or die("error"),应该不影响这段程序的功能吧?
目录下的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值是没有变化。如此分析后,问题应该出现在这个语句的语法方面。
$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";
}
?>
其中凉开水同志给出的正确解答我没有仔细看,后来我自己找到了原因,居然我引用的是($handler),正确的应该是$res.呵呵,分特了啊。
$num=mysql_num_rows($res);谢谢所有关心而且帮助我的哥们同志们,不知道有mm没,呵呵。