Jam*_*son 2 php mysql mysqli nginx
我正在使用PHP-FPM和MySQL运行nginx服务器.PHP已经安装了MySQL和MySQLi扩展,如确认的那样phpinfo().我上传的脚本在localhost上完美运行,当我尝试加载页面时出现500错误.我的nginx日志显示了这个:
2012/01/19 22时01分27秒[错误] 3393#0:*14的FastCGI在标准错误发送:"PHP警告:mysqli的::制备():无法在/var/www/mydomain.com/取的mysqli第12行的chat/index.php
PHP致命错误:调用一个成员函数执行()一个非对象在/var/www/mydomain.com/chat/index.php上线13" ,而从上游,客户机读取响应标头:82.32.181.151,服务器:mydomain.com,请求:"GET/chat/HTTP/1.1",上游:"fastcgi://127.0.0.1:9000",主持人:"mydomain.com"
我已用我的实际域名替换了mydomain.com.在index.php的第12行,我有这个:
$stmt = $mysqli->prepare('SELECT r_id, name, room_pass, max_users FROM `rooms` ORDER BY name ASC');
Run Code Online (Sandbox Code Playgroud)
谷歌之后,我发现了几个原因.一个是我提前关闭了我的数据库连接,这不是它.另一个是我混合了OOP和功能MySQLi调用,这也不是问题.此外,我的数据库连接信息是正确的.
所以,我很难过.
我假设您的第13行实际上是这样的:
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
这意味着您的prepare调用失败并返回一个布尔值FALSE $stmt.由于布尔值false不是对象,因此无法在其上调用方法,因此会出现错误.
尝试制作代码:
$stmt = $mysqli->prepare(...);
if ($stmt === FALSE) {
die($mysqli->error);
}
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
问题出现在你的第13行.你可能会做类似的事情
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
但是现在你要求包含方法的变量execute不是一个对象.可能是您的原因的问题是:
$stmt错误,所以它是一个未初始化的var$mysqli->prepare失败了.通过使用mysqli的错误函数找出它是哪一个...
| 归档时间: |
|
| 查看次数: |
22654 次 |
| 最近记录: |