Php sql语句已准备好但未执行(根据日志)

Php sql语句已准备好但未执行(根据日志),php,mysql,usercake,Php,Mysql,Usercake,所以,我使用的是usercake(用于用户管理的开源php-mysql组合)。不管怎样,我已经把它安装好了,工作得很好,没有问题。因为我希望我的注册不包括displayname和用户名,所以我在所有代码中都删除了displayname,包括mysqldb和它在香草安装中调用或使用的任何其他地方。我的老用户仍然可以正常登录和工作,但是我在注册新用户时遇到了一个我无法理解的错误(我对mysql/php相当陌生,所以我希望这里有人能帮助我解释我的日志文件,因为这是我第一次需要参考它们) 首先,这里是实

所以,我使用的是usercake(用于用户管理的开源php-mysql组合)。不管怎样,我已经把它安装好了,工作得很好,没有问题。因为我希望我的注册不包括displayname和用户名,所以我在所有代码中都删除了displayname,包括mysqldb和它在香草安装中调用或使用的任何其他地方。我的老用户仍然可以正常登录和工作,但是我在注册新用户时遇到了一个我无法理解的错误(我对mysql/php相当陌生,所以我希望这里有人能帮助我解释我的日志文件,因为这是我第一次需要参考它们) 首先,这里是实际准备数据/插入mysql的代码(所有转义和清理都省略了)

因此,我认为上面的所有内容(关键字)都很好,这里是调用上述代码时的日志mysql日志文件

           65 Prepare   INSERT INTO uc_users (
                user_name,
                password,
                email,
                activation_token,
                last_activation_request,
                lost_password_request, 
                active,
                title,
                sign_up_stamp,
                last_sign_in_stamp
                )
                VALUES (
                ?,
                ?,
                ?,
                ?,
                '1365565745',
                '0',
                ?,
                'New Member',
                '1365565745',
                '0'
                )
       65 Close stmt    
       65 Prepare   INSERT INTO uc_user_permission_matches  (
                user_id,
                permission_id
                )
                VALUES (
                ?,
                '1'
                )
       65 Execute   INSERT INTO uc_user_permission_matches  (
                user_id,
                permission_id
                )
                VALUES (
                '0',
                '1'
                )
现在有两件事我不明白,上面的所有内容第一件和更相关的是为什么
executeinsert-INTO-uc\u user(…
从未调用过?第二件为什么代码的其余部分执行(并以某种方式将用户id插入到uc\u user)并正确地将其传递到
uc\u-user\u-permission\u-matches


第2部分对于任何更熟悉UserCake内部工作的人来说,
ssssi
这个值绑定到了什么,因为我在其他地方找不到它的引用?

看起来问题是MySQL拒绝了对
insert-INTO-uc\u-user\u-permission\u-matches的insert查询,因为用户id是0,这让我相信前面的ous查询未正确完成

在第一个查询中,您似乎有5个占位符,但您正在尝试绑定6个占位符,请尝试以下操作:

// Remove one of the s placeholders 
$stmt->bind_param("ssssi", $this->username, $secure_pass, $this->clean_email, $this->activation_token, $this->user_active);

查询是否包装在事务中?“SSSSII”仅表示绑定过程中预期的占位符(按数据类型)(s=string,i=int)。不完全确定事务是什么。不,查询没有包装在事务中,它们只是按顺序执行,此时没有数据库回滚(这解释了
uc\u user\u permission\u matches
update)。但是,为什么我的插入到uc\u user中没有执行?…这是我当前的主要问题,凯,你的回答完全正确,现在我需要绑定所有这些变量,因此,我添加了一个额外的占位符,而不是
,表名应该这样做吗?
// Remove one of the s placeholders 
$stmt->bind_param("ssssi", $this->username, $secure_pass, $this->clean_email, $this->activation_token, $this->user_active);