php 写入数据库时Call to a member function bind_param() on a non-object,急,求解

$sql="insert into user (username,password,question,answer,sex,birth,Email,phonenum,randcode,level) values(?,?,?,?,?,?,?,?,?,?)";
$regin->mysqli_stmt=$regin->mysqli->prepare($sql);
$regin->mysqli_stmt->bind_param("sssssssssi",$username,$password,$question,$answer,$sex,$birth,$email,$phonenum,$randcode,$level);
看了一个下无了就是早不到原因
$regin->mysqli_stmt->bind_param("ssssss....这一行就是报错,核对了数目,根本就没错,逗号也没漏
Call to a member function bind_param() on a non-object

而且用MySQL 5.6 Command Line Client - Unicode写入成功了
insert into user (username,password,question,answer,sex,birth,Email,phonenum,randcode,level) values('test','test','test','test','test','2014-7-17','test','test','test',1)
其它的都是text型,只有birth是date和level是int型的
是我之前进行了读取,导致问题出现了在读取数据使用完成后再使用
$regin->mysqli_stmt->free_result();
进行释放,就可以了

依 Call to a member function bind_param() on a non-object 是因为$regin>mysqli_stmt 这个对象错误了, 也就是$regin->mysqli->prepare($sql);在这一句返回的不是statement对象, 而是prepare时发生错误返回了false, 所以下面那句就会接着出错, 你可以试试debug输出下执行prepare时发生的错误, 可以用mysqli_error($link)之类的方法输出错误的原因, $link 就是你连接mysqli的资源, 或者一般有数据库错误之类的会有日志记录, 看看你服务器的mysql有没有开启日志记录, 然后找到日志里面查看数据库报错原因
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-17
对象里没有bind_param方法。本回答被提问者采纳
第2个回答  2017-06-26
你这个问题是没有实例化对象,或者是调用了一个不存在的类。具体原因需要贴出源码,我来为你指明。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网