请PHP高手帮忙看下这个程序

来源:百度知道 编辑:UC知道 时间:2024/05/21 16:26:39
<?php
//连接到数据库
$dbconn = mysqli_connect("127.0.0.1", "root", "123456", "phpbook") or die("不能连接到数据库");

//关闭自动提交
mysqli_autocommit($dbconn, false);
//用户注册事务开始
$name = $_POST['name'];
$pwd = $_POST['pwd'];
$realname = $_POST['realname'];
$addr = $_POST['addr'];
$reg = $_POST['reg'];

if ($_POST['submit'] && isset($reg) && $reg =="reg") {
//增加用户到bookuser表
$sql1 = "insert into bookuser(id,name,pwd,regtime) values(NULL,'".$name."','".$pwd."', now())";
// mysql_query("SET NAMES 'GBK'");
$result = mysqli_query($dbconn, $sql1);

if ($result !== true) {
mysqli_rollback($dbconn); //如果出错,则回滚到开始状态
}
//获取刚注册用户的ID信息
$conn = mysql_connect("127.0.0.1","root","123456");
m

//获取刚注册用户的ID信息
$conn = mysql_connect("127.0.0.1","root","123456");
mysql_select_db("phpbook");
$sql2 = "select id from bookuser where name='$name' ";
$result = mysql_query($sql2);
while($row = mysql_fetch_array($result)){
$uid = $row["id"];
}
你这样获取注册ID是不准确的,直接这样就可以获得插入ID了,$dbconn->insert_id;

再有你这样设字符集也是有问题的,应该这样,
$dbconn->set_charset('gb2312') ;

我靠,不知道是你看书看的不够细还是教程垃圾。
事物回滚的话,用mysql是需要把默认myisam引擎换成其他的才支持的。
不过我建议你回滚的事情就不要在mysql考虑了,换个设计思路吧。myisam这套还是很高效的,玩好两个关键词就ok。
不能回滚,原子回滚。

如果你们的安全级别真的那么高?个人感觉基本上除了金融类的,其他的就连游戏这方面也没有那么刚性的需求。真有那么高,上oracle和ibm的db2吧。不过不是打击你,要是你用这个就不会在这提这个问题了:P

顺便恶狠狠的再念一次,oracle,真垃圾。

去网上搜php编码转换函数,你的是字符集不配。比如你的网页是utf8的,而数据表是gb2312的,或反过来。

我就是用字符集转换函数成功的。

任何字符集下,英文字符都不会出错,但汉字不行。

我以前也遇到过类似的问题,主要是字符集的设置,你可以将数据库,PHP,HTML页面文件的字符集都设为“utf8”,我就是这么解决的

同意“邢