【问题标题】:PHP Fatal error: Uncaught Error: Call to a member function query() on null in line 23PHP 致命错误:未捕获的错误:在第 23 行调用 null 上的成员函数 query()
【发布时间】:2017-07-31 10:48:12
【问题描述】:

当我运行这条线时

$sql = $_db->query("UPDATE users SET theyear= '1999' WHERE UserName='batman'");

我收到此错误

PHP Fatal error:  Uncaught Error: Call to a member function query() on null in line 23 

如果用户连接到服务器,我使用棘轮 lib 和 php 更改数据库行上的值,代码可以毫无问题地找到数据库表,但是在编辑值行时出现此错误

数据库connectToDB.php代码

$dbhost     = "localhost";
$dbname     = "test";
$dbuser     = "root";
$dbpass     = "";

// database connection
try{
    $_db = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass, array(
                    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", 
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                    PDO::ATTR_PERSISTENT => true
                )); 
}catch(Excepion $e){
    die("ERROR : ".$e->getMessage());
}
?>

编辑行值的php代码

<?php
namespace MyApp;

include('/opt/lampp/htdocs/x/classes/user.php');
include('/opt/lampp/htdocs/x/connectToDB.php');

use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;

class Chat implements MessageComponentInterface {
    protected $clients;

    public function __construct() {
        $this->clients = new \SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn) {
    global $_db;

        // Store the new connection to send messages to later
        $this->clients->attach($conn);

        echo "New connection! ({$conn->resourceId})\n";



       $sql = $_db->query("UPDATE users SET theyear= '1999' WHERE UserName='batman'");

    }

composer.json 代码

{
    "autoload": {
        "psr-0": {
            "MyApp": "src"
        }
    },
    "require": {
        "cboden/ratchet": "^0.3.6",
        "cboden/ratchet": "^0.3.6"
    }
}

【问题讨论】:

  • 您的数据库对象为空。您的连接字符串有问题。
  • @ChipDean 怎么样,但我尝试在没有棘轮的情况下使用它,并且编辑线没有任何问题?
  • 你有
  • 错误表明您的连接对象为空。要么是您的连接字符串,要么是文件 istelf 的问题。
  • @ChipDean 是的,我的意思是抱歉

标签: php mysql websocket xampp composer-php


【解决方案1】:
$r = $_db->prepare("your query here");
$r->execute();

这会起作用

【讨论】:

  • 我收到此错误 PHP 致命错误:未捕获错误:调用成员函数 prepare()
  • setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo "连接失败:" 。 $e->getMessage();死(); } 检查你的连接
  • 我找不到 MyApp\PDO'
  • 我修复了 MyApp\PDO' 未找到
  • 但是我得到新的错误 PHP 注意:未定义的变量:_db 在这一行 $sql = $_db->prepare("my query")
猜你喜欢
  • 2017-07-13
  • 2020-08-24
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 2020-10-04
  • 2016-04-20
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多