我的代码是:
$sql = 'INSERT INTO t_account set uid=:uid, pwd=:pwd,
register_time=:registerTime';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':uid', $this->uid, PDO::PARAM_STR);
在macOS PHP 5.6上,mysql,没关系。 在macOS PHP 7.0,mysql上,没关系。
但是对于centos 7.3 PHP 5.4.45,mariadb,$stmt
似乎为空,当我print_r $stmt
时,它什么也没有显示。
PDO :: PARAM_STR应该包含2个参数,所以我认为,最后一行代码没问题,当exec $ stmt = $ dbh-> prepare($ sql)时,$ stmt似乎是null,有些错误了已经发生了。
bindParam报告错误:
致命错误:在 /var/www/html/sxb/model/Account.php 上的非对象上调用成员函数bindParam() 。 479
我的代码是:
$ sql =' INSERT INTO t_account set uid =:uid,pwd =:pwd,register_time =:registerTime&#39 ;; $ stmt = $ dbh-> prepare($ sql);
$ stmt-> bindParam(':uid',$ this-> uid,PDO :: PARAM_STR);
在macOS PHP 5.6上,mysql,没关系。在macOS PHP 7.0,mysql上,没关系。
但是在centos 7.3 PHP 5.4.45,mariadb,
现在我得到了错误原因:
当其他未缓冲的查询处于活动状态时,无法执行查询。考虑使用PDOStatement :: fetchAll()。或者,如果您的代码只是针对mysql运行,则可以通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲。
我想知道,为什么macOS没问题,而centos错了。有什么不同? PDO的版本差异引领了这个?